Saltar al contenido

¿Cómo exportar un csv desde la API de hoja de Google?

Solución:

La siguiente URL le proporciona el CSV de una hoja de cálculo de Google por hoja. La hoja debe ser accesible para el público, por cualquier persona que tenga el enlace (no listado).

Los parámetros que debe proporcionar son:

  • ID de hoja (que es simplemente el ID en la URL de una hoja de cálculo de Google https://docs.google.com/spreadsheets/d/{{ID}}/edit)
  • nombre de la hoja (que es simplemente el nombre de la hoja dado por el usuario)
https://docs.google.com/spreadsheets/d/{{ID}}/gviz/tq?tqx=out:csv&sheet={{sheet_name}}

Con esa URL puede ejecutar una solicitud GET para obtener el CSV. O péguelo en la barra de direcciones de su navegador.

Puede usar la API de Drive para hacer esto hoy; consulte https://developers.google.com/drive/v3/web/manage-downloads#downloading_google_documents; sin embargo, eso lo limitará a la primera hoja del documento. La API de Hojas de cálculo no expone la exportación como CSV hoy, pero puede ofrecerla en el futuro.

En primer lugar, debe hacer que el documento sea accesible para cualquier persona. Entonces obtienes url. De esto url deberías extraer mucho id compuesto por letras y números grandes y pequeños. Entonces usa este script.

#!/bin/bash

long_id="id_assigned_to_your_document"
g_id="number_assigned_to_card_in_google_sheet"

wget --output-document=temp.csv "https://docs.google.com/spreadsheets/d/$long_id/export?gid=$g_id&format=csv&id=$long_id"

Si usa solo una tarjeta en el documento, su número es: g_id="0"

El problema que probablemente tendrá está relacionado con strange spaces en el archivo obtenido. Yo uso este segundo script para procesarlo.

#!/bin/bash
#Delete all lines beginning with a # from a file
#http://stackoverflow.com/questions/8206280/delete-all-lines-beginning-with-a-from-a-file
sed '/^#/ d' temp.csv | 
# reomve spaces
# http://stackoverflow.com/questions/9953448/how-to-remove-all-white-spaces-from-a-given-text-file
tr -d "[:blank:]" |
# regexp "1,2" into 1.2
# http://www.funtoo.org/Sed_by_Example,_Part_2
sed 's/"([−]?[0-9]*),([0-9]*)"/1.2/g' > out.csv

Actualizar

Como mencionó Sam, api es una mejor solución. Ahora hay una gran documentación sobre la dirección:

https://developers.google.com/sheets/quickstart/php

Con ejemplo que genera salida con estructura CSV.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *