Obtener datos de Google Spreadsheets mediante JSONP

Existe un Google API para obtener los datos de las hoja de cálculo de Google (Google Spreadsheets) en formato JSON mediante JSONP. Una vez que tenemos la hoja de cálculo en dicho formato, podemos manejar su contenido dentro de otra aplicación mediante una función de respuesta (callback function) en Javascript.

Es necesario que la hoja de cálculo sea púbica, para lo que basta con publicarla en la web dentro de sus opciones de configuración.

El proceso se realiza en dos pasos:

  1. Ejecutar la función que carga los datos en formato JSON.
  2. Ejecución de la función de respuesta (callback) especificada en la URL de llamada a la hoja de cálculo.

El ID de la hoja de cálculo se encuentra en su URL:

https://docs.google.com/spreadsheets/d/id-de-la-hoja-de-calculo/edit#gid=0

Encontrar el ID de la hoja de trabajo es un poco más complicado. Debemos obtener su RSS feed mediante la siguiente llamada:

https://spreadsheets.google.com/feeds/worksheets/id-de-la-hoja-de-calculo/private/full

Encontraremos el ID que necesitamos en la última parte del contenido del tag <id>. En caso de que tengamos una sola hoja de trabajo o estemos procesando la primera de varias hojas (la situada en la pestaña izquierda de la hoja de cálculo), este ID es siempre «od6″.

El primer paso se realiza ejecutando un script en el que se llama la siguiente URL:

https://spreadsheets.google.com/feeds/list/id-de-la-hoja-de-calculo/id-de-la-hoja-de-trabajo/public/values?alt=json-in-script&callback=nuestra-funcion-callback

En la URL se especifica la función de respuesta a ejecutar inmediatamente, una vez que los datos son obtenidos en formato JSON.

function nuestra-funcion-callback(json) {
// procesamos los datos json
}

Puede verse el resultado aquí. El código fuente contiene todo lo necesario para realizar el proceso.

En GitHub.

https://github.com/KitBit/gdata-basic

Debemos tener en cuenta que las etiquetas XML y JSON son diferentes si llamamos a la URL anterior con

.../feeds/list/...

o bien

.../feeds/cells/...

aspecto que tiene que tener en cuenta la función callback para el procesamiento del contenido JSON.