Obtener datos de un Google Docs Spreadsheet mediante Javascript

Aunque parezca mentira, google no ofrece una manera sencilla de leer datos de una hora de cálculo pública mediante Javascript. La única manera que he encontrado es publicar la hoja de cálculo como una página web y utilizar Javascript para parsear los datos. Hasta ahora estaba utilizando una API de Yahoo, que funcionaba bien pero con un ligero problema…. SÓLO funcionaba en Firefox. Ni Chrome, ni Safari, ni (sin sorprender a nadie) Explorer.

Pero bueno, en mi público objetivo todos tenían instalado Firefox, así que tan simple como decir “solo funciona en Firefox!!!” 😛

El problema fue cuando un amigo me dijo “NO FUNCIONA EN FIREFOX!!!”. ¿Tal vez era problema de la nueva versión? Efectivamente, en Firefox 4 ya no funcionaba. Siendo esto la gota que colmaba el vaso, me puse a buscar un nuevo script que me permitiera acceder a los datos, encontrando este.

Aquí se puede ver un sencillo ejemplo en funcionamiento y probar tu propia hoja de cálculo.

El ejemplo no es muy intuitivo en cuanto a como obtener los datos (al menos a mi no me lo pareció :P), pero básicamente el objeto “result” es un objeto de JSON, por lo que se puede recorrer el objeto “data” como si fuese un vector. Por ejemplo este código mostraría todos los datos de la hoja de cálculo:

googleSpreadsheet.load(function(result) {
    for(var i = 0; i < result.data.length; i++){
        alert(result.data[i]);
    }
});

El problema es que no hay manera de saber la fila o columna en la que te encuentras, por lo que hay que añadir algo de lógica para tener eso controlado. También me queda comprobar como se comporta cuando la hoja de cálculo tiene varias páginas, pero eso para más adelante 😛