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

Al integrar estas clases en tu proyecto, asegúrate de que los datos que maneja la biblioteca sean consistentes y fáciles de utilizar por el usuario. Al implementar opciones dinámicas y accesibles, puedes proporcionar una experiencia más fluida al interactuar con hojas de cálculo de Google Sheets y otras funcionalidades que tu biblioteca ofrece.

¡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.6.tar.gz (7.6 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.6-py3-none-any.whl (7.7 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: indexyz-0.1.6.tar.gz
  • Upload date:
  • Size: 7.6 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.6.tar.gz
Algorithm Hash digest
SHA256 4d75a0e17c13d7d458c122f118542f725983fc7bf42c2b4abe7d800188f9aec2
MD5 aa50c49d80ba7d7b06b944d9c7819a46
BLAKE2b-256 4014b38c6349e53851845e12542285621235f843b18dd8315f637f8f77a9d7b7

See more details on using hashes here.

File details

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

File metadata

  • Download URL: indexyz-0.1.6-py3-none-any.whl
  • Upload date:
  • Size: 7.7 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.6-py3-none-any.whl
Algorithm Hash digest
SHA256 7c134ce964887d6b6c6a74c78eee28f7f819af534e36cd48a5907ec8f223f0a9
MD5 0fc481bc87c59626ea57605747eb3f00
BLAKE2b-256 7c5626cd641b7b8f1a07b0f9cf8797ffd42055d830151bdda6aed2ca3d30f9e1

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