Hojas de Cálculo de Google y Python

February 16, 2017
Redactado por

python-and-google-sheets

Esta publicación está inspirada en el recordatorio de Patrick McKenzie de que a veces no se necesita una base de datos:

 

En este tutorial, vamos a utilizar el excelente paquete gspread de Python de Anton Burnashev para leer, escribir y borrar datos de una hoja de cálculo de Google con sólo unas pocas líneas de código.

El API de Google Drive y Cuentas de Servicio

A riesgo de ser el Capitán Obvio, usted va a a necesitar una hoja de cálculo si desea seguir adelante con este post. Si no tiene una a mano que está lleno de buenos datos, le puedo  sugerir que haga una copia de esta hoja de cálculo con información de contacto de todos los legisladores de los Estados Unidos? (Nota al margen: Ian Webster utiliza estos datos junto con Twilio de manera de hacer más fácil para los ciudadanos llamar al congreso).

Para acceder a la hoja de cálculo mediante programación, tendrá que crear una cuenta de servicio y credenciales de la OAuth2 desde la consola API de Google. Si usted ha sido traumatizado al desarrollar en  OAuth2 antes, no se preocupe; las cuentas de servicio son la forma más fácil de usarlo.

Continúe siguiendo los pasos y el GIF de abajo. Podrá entrar y salir de la consola en 60 segundos (muy parecido a Nick Cage en su película favorita de Nick Cage).

  1. Vaya a la Consola de API de Google.
  2. Cree un nuevo proyecto.
  3. Haga  click en Habilitar API. Busque y active la API de Google Drive.
  4. Cree credenciales para un Servidor Web para acceder a Datos de la Aplicación.
  5. Nombre la cuenta de servicio y otorgue Papel de Editor del Proyecto.
  6. Descargue el archivo JSON.
  7. Copie el archivo JSON a su directorio de código y cámbiele el nombre a: client_secret.json

Hay un último paso necesario para autorizar la aplicación, y es fácil pasarlo por alto!

Encuentre el  client_email dentro de client_secret.json. De regreso en la hoja de cálculo, haga clic en el botón de Compartir en la parte superior derecha, y pegue el cliente de correo electrónico en el campo Personas para darle derechos de edición. Pulse enviar.

Si se salta este paso, obtendrá un error de: gspread.exceptions.SpreadsheetNotFound cuando intente acceder a la hoja de cálculo desde Python.

 

 

Hemos terminado con la parte aburrida! Ahora vamos con el código.

Leer Datos desde una Hoja de Cálculo con Phyton

Con las credenciales en su lugar (usted los copió en el directorio del código, verdad?) el acceder a una hoja de cálculo de Google en Python requiere sólo de dos paquetes:

  1. oauth2client- para autorizar con la API de Google Drive mediante OAuth 2.0
  2. gspread- para interactuar con la Hoja de Cálculo de Google

Instale estos paquetes con:

pip install gspread oauth2client

A continuación, pegue este código en un nuevo archivo llamado spreadsheet.py:

python
import gspread
from oauth2client.service_account import ServiceAccountCredentials


# use creds to create a client to interact with the Google Drive API
scope = ['https://spreadsheets.google.com/feeds']
creds = ServiceAccountCredentials.from_json_keyfile_name('client_secret.json', scope)
client = gspread.authorize(creds)

# Find a workbook by name and open the first sheet
# Make sure you use the right name here.
sheet = client.open("Copy of Legislators 2017").sheet1

# Extract and print all of the values
list_of_hashes = sheet.get_all_records()
print(list_of_hashes)

Ejecute spreadsheet.py de Phyton y maravíllese con datos gloriosos y bien formateados.

Insertar, Actualizar y Eliminar desde una Hoja de Cálculo con Python

Sólo hemos arañado la superficie de la bien documentada  y completa funcionalidad de gspreads.

Por ejemplo, usted extrajo los datos en una lista de hashes, pero se puede obtener una lista de las listas si así lo prefiere:

sheet.get_all_values()

 

O simplemente puede extraer los datos de una sola fila, columna o celda:

python
sheet.row_values(1)

sheet.col_values(1)

sheet.cell(1, 1).value

Puede escribir en la hoja de cálculo cambiando una celda específica:

sheet.update_cell(1, 1, "I just wrote to a spreadsheet using Python!")

O puede insertar una fila en la hoja de cálculo:

row = ["I'm","inserting","a","row","into","a,","Spreadsheet","with","Python"]
index = 1
sheet.insert_row(row, index)

También puede eliminar una fila de la hoja de cálculo:

sheet.delete_row(1)

Y averiguar el número total de filas:

sheet.row_count

Compruebe la referencia API de gspread para detalles completos sobre estas
funciones, junto con unas cuantas docenas de otras.

El uso de hojas de cálculo de Google con Python abre posibilidades como la construcción de una aplicación Flask con una hoja de cálculo como la capa de persistencia, o importar datos desde una hoja de cálculo en Google hacia Jupyter Notebooks y haciendo análisis en Pandas. Si quieres empezar a utilizar Python y Twilio, visita nuestro sitio Inicios rápidos con Python.

Si usted desarrolla algo genial, por favor hágamelo saber. Me puede encontrar en gb@twilio.com o @greggyb. Y si este post fue  útil, por favor compártalo con alguien que quiera profundizar.

Muchas gracias a Devin y Sam por  las revisiones, a Google por las Hojas, y sobre todo, a Anton por  gspread.