Skip to main content

Biblioteca para interactuar con Google Sheets.

Project description

Index 📌 Index es una biblioteca de Python diseñada para facilitar la interacción con Google Sheets mediante las operaciones GET, UPDATE y BATCHUPDATE.

📌 Cómo Obtener las Credenciales para Google Sheets Para utilizar esta biblioteca con Google Sheets, es necesario obtener credenciales de una cuenta de servicio en Google Cloud. Sigue estos pasos para configurarlas correctamente:

1️⃣ Crear un Proyecto en Google Cloud Accede a la Consola de Google Cloud. Crea un nuevo proyecto o selecciona uno existente.

2️⃣ Habilitar la API de Google Sheets En la Consola de Google Cloud, ve a APIs y Servicios > Biblioteca. Busca "Google Sheets API" y haz clic en Habilitar.

3️⃣ Crear una Cuenta de Servicio Ve a APIs y Servicios > Credenciales. Haz clic en Crear credenciales y selecciona Cuenta de servicio. Asigna un nombre y una descripción a la cuenta de servicio. En el apartado de Roles, selecciona Editor. Haz clic en Continuar y luego en Listo.

4️⃣ Descargar el Archivo JSON de Credenciales En la sección de Cuentas de servicio, selecciona la cuenta que creaste. Ve a la pestaña Claves y haz clic en Añadir clave > Crear nueva clave. Selecciona el formato JSON y descarga el archivo. Guarda este archivo en un lugar seguro y añádelo a tu proyecto de Python.

5️⃣ Compartir el Google Sheet con la Cuenta de Servicio Abre tu hoja de Google Sheets. Haz clic en Compartir. Copia el correo electrónico de la cuenta de servicio (se encuentra en la Consola de Google Cloud). Pega el correo en la sección de compartir y otórgale permisos de Editor.

1. initialize_credentials(empresa)

  • Propósito: Inicializa las credenciales de Google Sheets usando un archivo JSON.
  • Argumentos:
    • empresa: Nombre de la empresa para buscar su archivo JSON de credenciales.
  • Retorno: Un servicio de Google Sheets o None si ocurre un error.
  • Ejemplo:
    service = Index.initialize_credentials("mi_empresa")
    

2. get_data(service, archivo, hoja, rango=None)

  • Propósito: Obtiene datos de una hoja de cálculo de Google Sheets.
  • Argumentos:
    • service: Objeto de servicio de Google Sheets.
    • archivo: ID del archivo de Google Sheets.
    • hoja: Nombre de la hoja.
    • rango: Rango de celdas (opcional).
  • Retorno: Lista con los datos de la hoja.
  • Ejemplo:
    data = Index.get_data(service, "archivo_id", "Hoja1", "A1:B10")
    

3. update_data(service, archivo, hoja, rango, valores)

  • Propósito: Actualiza un rango específico en Google Sheets.
  • Argumentos:
    • service: Objeto de servicio de Google Sheets.
    • archivo: ID del archivo.
    • hoja: Nombre de la hoja.
    • rango: Rango a actualizar.
    • valores: Nuevos valores para actualizar.
  • Retorno: Ninguno (actualiza los datos en Google Sheets).
  • Ejemplo:
    Index.update_data(service, "archivo_id", "Hoja1", "A1", [["Nuevo valor"]])
    

4. update_data_locate(service, archivo, hojas, ubicaciones, valores)

  • Propósito: Actualiza varias celdas en varias hojas.
  • Argumentos:
    • service: Objeto de servicio de Google Sheets.
    • archivo: ID del archivo.
    • hojas: Lista de nombres de hojas.
    • ubicaciones: Lista de ubicaciones a actualizar.
    • valores: Valores a poner en las ubicaciones.
  • Retorno: Ninguno (actualiza las celdas en las hojas).
  • Ejemplo:
    Index.update_data_locate(service, "archivo_id", ["Hoja1", "Hoja2"], ["A1", "B2"], [["Valor1"], ["Valor2"]])
    

5. get_index(data_cliente, columnas=None, filas=None)

  • Propósito: Obtiene un subconjunto de datos seleccionados por columnas y filas.
  • Argumentos:
    • data_cliente: Datos de la hoja.
    • columnas: Letras de columnas o rangos.
    • filas: Índices de filas.
  • Retorno: Subconjunto de datos.
  • Ejemplo:
    data_subset = Index.get_index(data_cliente, columnas=["A", "B"], filas=[1, 2])
    

6. print_matriz(matriz)

  • Propósito: Imprime una matriz (lista de listas) en formato tabular.
  • Argumentos:
    • matriz: La matriz a imprimir.
  • Retorno: Ninguno (solo imprime).
  • Ejemplo:
    Index.print_matriz([["A", "B"], ["C", "D"]])
    

A continuación, se presenta una nueva clase VentanaUsuario que permite crear una ventana interactiva donde el usuario puede elegir entre varias opciones representadas por botones. Cada botón está asociado a una función específica que se ejecutará cuando se presione el botón correspondiente.

VentanaUsuario: Clase para la Creación de Ventanas Interactivas

La clase VentanaUsuario permite crear ventanas donde el usuario puede elegir entre varias opciones (botones) que están asociadas a funciones específicas. Cada opción se presenta como un campo de entrada (Entry) en la interfaz gráfica.

Ejemplo de Uso

El siguiente ejemplo muestra cómo crear una ventana con varias opciones, cada una con un campo de entrada. Al presionar un botón, el campo correspondiente será mostrado en la ventana.

def opcion1(frame):
    #El manejo de lo que deseas con la libreria tkinter y customtkinter.
    pass

def opcion2(frame):
    #El manejo de lo que deseas con la libreria tkinter y customtkinter.
    pass

def opcion3(frame):
    #El manejo de lo que deseas con la libreria tkinter y customtkinter.
    pass

def opcion4(frame):
    #El manejo de lo que deseas con la libreria tkinter y customtkinter.
    pass

ventana_usuario = VentanaUsuario({
    "Ventana 1": (["Botón 1", "Botón 2"], [opcion1, opcion2]),
    "Ventana 2": (["Botón A", "Botón B"], [opcion3, opcion4]),
}).mostrar()

Explicación del Código:

  1. Definición de Opciones: Cada opción está representada por una función, como opcion1, opcion2, opcion3, etc. Estas funciones se encargan de crear un campo de entrada (Entry) en la ventana de la interfaz gráfica.

  2. VentanaUsuario: La clase VentanaUsuario recibe un diccionario donde las claves son los nombres de las ventanas y los valores son tuplas con dos elementos:

    • La primera lista dentro de la tupla contiene los nombres de los botones.
    • La segunda lista contiene las funciones asociadas a cada botón.
  3. mostrar(): Esta función se encarga de crear la ventana y mostrarla con todos los botones. Cuando el usuario hace clic en un botón, se ejecuta la función asociada a ese botón, mostrando un campo de entrada correspondiente.

¿Cómo Funciona en Varias Ventanas?

La clase VentanaUsuario puede manejar múltiples ventanas con diferentes botones y opciones. Puedes definir tantas ventanas como necesites, cada una con sus botones y las funciones asociadas. Esto es útil cuando tienes múltiples formas de interacción con el usuario y deseas organizar las opciones de manera clara.

ventana_usuario_1 = VentanaUsuario({
    "Ventana A": (["Botón X", "Botón Y"], [opcion1, opcion2]),
    "Ventana B": (["Botón P", "Botón Q"], [opcion3, opcion4]),
}).mostrar()

ventana_usuario_2 = VentanaUsuario({
    "Ventana C": (["Botón L", "Botón M"], [opcion1, opcion2]),
    "Ventana D": (["Botón N", "Botón O"], [opcion3, opcion4]),
}).mostrar()

En este ejemplo, se crean dos ventanas distintas con opciones separadas. Esto permite una mayor flexibilidad en la interacción del usuario con la interfaz gráfica.


Consideraciones Finales

¡Listo! Ahora puedes usar la biblioteca para interactuar con Google Sheets.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

indexyz-0.1.7.tar.gz (7.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

indexyz-0.1.7-py3-none-any.whl (7.5 kB view details)

Uploaded Python 3

File details

Details for the file indexyz-0.1.7.tar.gz.

File metadata

  • Download URL: indexyz-0.1.7.tar.gz
  • Upload date:
  • Size: 7.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.11.8

File hashes

Hashes for indexyz-0.1.7.tar.gz
Algorithm Hash digest
SHA256 ae5a8d10804034e26433a105c32db55730e1977d6155c72bf88e749e9eac676b
MD5 71e5940d5f5a7b78713e96beb2fd8da1
BLAKE2b-256 e2a5c778cf37c56e3dbd0eeb20aced5c1d63ceb95878ae7bcf09bff8f7543fb0

See more details on using hashes here.

File details

Details for the file indexyz-0.1.7-py3-none-any.whl.

File metadata

  • Download URL: indexyz-0.1.7-py3-none-any.whl
  • Upload date:
  • Size: 7.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.11.8

File hashes

Hashes for indexyz-0.1.7-py3-none-any.whl
Algorithm Hash digest
SHA256 3ac279bec3099809d0894027754455f7776ed136afc63fdbbe7ef4b505428416
MD5 b28232e462f1a3cc30439c696e94a882
BLAKE2b-256 afbaa917d85607b5b0b31a67b3e31ba19605fef44f27852c4a960e95eb98af04

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page