¿Cómo puedo acceder a las hojas de cálculo Hoja de Google únicamente con Javascript?
Pregunta
Quiero tener acceso a las hojas de cálculo de Google usando sólo JavaScript (sin .NET, C #, Java, etc.)
aquí y se sorprendió al saber que no hay ninguna API para JavaScript para acceder a Google Sheets.
Por favor, dígame cómo el acceso (Crear / editar / borrar) Hojas de cálculo utilizando JavaScript o cualquiera de sus frameworks como jQuery.
Solución
He creado una biblioteca de Javascript simple que recupera datos de Google hojas de cálculo (si se publican) a través de la API JSON:
https://github.com/mikeymckay/google-spreadsheet-javascript
Se puede verlo en acción aquí:
http://mikeymckay.github.com/google-spreadsheet-javascript/ sample.html
Otros consejos
Jan 2018 ACTUALIZACIÓN : Cuando respondí esta pregunta el año pasado, me he olvidado de mencionar un tercera vía para acceder a Google API con JavaScript, y que iba a ser de Nodo. js aplicaciones usando las su biblioteca de cliente, por lo que añade a continuación.
Es mar 2017 , y la mayoría de las respuestas aquí son obsoletas - la respuesta aceptada ahora se refiere a una biblioteca que utiliza una versión más antigua de la API. Una respuesta más corriente: se puede acceder a la mayoría de las API de Google sólo con JavaScript. Google ofrece 3 maneras de hacer esto hoy:
- Como se mencionó en la respuesta por Dan Dascalescu , puede utilizar Google Apps script , la solución JavaScript-en-Google's en la nube. Es decir, no Nodo de servidor JS aplicaciones fuera del navegador que se ejecutan en los servidores de Google.
- codificar sus aplicaciones en el Apps Script editor de código , y se puede acceder a Hojas de cálculo de dos maneras diferentes:
- Servicio de hoja de cálculo (soporte objeto nativo; uso guía ); nativa es más fácil, pero es generalmente mayor que ...
- Google Sheets Servicio Avanzado (acceder directamente a la última API de Google Sheets RESTO [ver más adelante]; uso guía )
- Apps Script también alimenta complementos , y se puede extender Hojas la funcionalidad de la interfaz de usuario con hojas de complementos (como estos )
- Usted puede incluso escribir complementos para dispositivos móviles que se extienden la Sheets aplicación en Android
- Para obtener más información acerca del uso de Apps Script, echa un vistazo a estos videos I' he creado (la mayoría implican el uso de hojas)
- codificar sus aplicaciones en el Apps Script editor de código , y se puede acceder a Hojas de cálculo de dos maneras diferentes:
- También puede utilizar la API de Google href="http://developers.google.com/api-client-library/javascript" rel="noreferrer"> Biblioteca cálculo de Google API REST en el lado del cliente.
- algunas muestras genéricas de utilizar la biblioteca cliente
- La última Hojas API (v4) fue lanzado href="http://googleappsdeveloper.blogspot.com/2016/05/apps-dev-sheets-api.html" en Google I / O 2016; es mucho más poderoso que todas las versiones anteriores, dando a los desarrolladores acceso programático a la mayoría de las características que se encuentran en las hojas de la interfaz de usuario
- JavaScript inicio rápido de la API para ayudarle a empezar
- Aquí están de muestra "recetas" (cargas útiles JSON) para las solicitudes de núcleo API
- Si usted no es "alérgica" a Python (si es así, simplemente fingir que es pseudocódigo;)), hice varios videos con muestras más "mundo real" del uso de la API se puede aprender de y migrar a JS Si lo desea (NOTA: aunque es Python coda, la mayoría de las solicitudes de la API tienen JSON y fácil de transportar a JS):
- Migración de SQL en una hoja (código de inmersión profunda poste )
- formato de texto utilizando el Sheets API (código de inmersión profunda poste )
- diapositivas generar a partir de los datos de hoja de cálculo (código de inmersión profunda poste )
- La tercera manera de acceder a las API de Google con JavaScript es Node.js de aplicaciones usando su cliente biblioteca. Funciona de manera similar a la utilización de la biblioteca de cliente JavaScript (cliente) describió justo por encima, sólo le va a acceder la misma API del lado del servidor. Aquí está el ejemplo Node.js Acelerada para Sheets. Usted puede encontrar los vídeos basados ??en Python anteriores a ser aún más útil, ya que también acceder a la API del lado del servidor.
Cuando se utiliza la API REST, que necesita para gestionar y almacenar su código fuente, así como realizar la autorización de rodar su propio código de autenticación (ver ejemplos más arriba). Apps Script maneja esto en su nombre, la gestión de los datos (reduciendo el "dolor" como se ha mencionado por Ape-Inago en su respuesta ), y su código se almacena en los servidores de Google. Sin embargo, su funcionalidad se limita a los servicios que ofrece la aplicación de secuencias de comandos y es JS mayor edad (ES3 + cuenta con algunos ES5 y personalizaciones de Google), mientras que la API REST proporciona a los desarrolladores un acceso mucho más amplio a la API. Pero bueno, es bueno tener opciones, ¿verdad? En resumen, para responder a la pregunta original OP, en lugar de cero, los desarrolladores tienen tres formas de acceder a Hojas de cálculo utilizando JavaScript.
Aquí está el quid.
Se puede crear una hoja de cálculo utilizando el Google Sheets API . Actualmente no existe una manera de eliminar una hoja de cálculo con el API (leer la documentación). Piense en la API de Google Docs como la ruta para crear y documentos de consulta.
Puede añadir / quitar las hojas de trabajo dentro de la hoja de cálculo con el los alimentos a base de hoja de cálculo .
Actualización de una hoja de cálculo se lleva a cabo a través de cualquiera alimentaciones lista basada o piensos a base de células .
La lectura de la hoja de cálculo puede hacerse a través de cualquiera de las hojas de cálculo de Google API mencionado anteriormente o, para las hojas publicadas solamente , mediante el uso de la google API de visualización Query Language a consulta los datos (que puede devolver resultados en formato CSV, JSON, o en formato de tabla HTML).
Forget jQuery. jQuery sólo es realmente útil si usted está atravesando el DOM. Dado que el gas (Google Apps Scripting) no utiliza el DOM de jQuery agregará valor a su código. Se adhieren a la vainilla.
Estoy realmente sorprendido de que nadie ha proporcionado esta información en una respuesta todavía. No sólo puede se puede hacer, pero es relativamente fácil de hacer uso de la vainilla JS. La única excepción de la API de visualización de Google, que es relativamente nuevo (a partir de 2011). La API de visualización también trabaja exclusivamente a través de una cadena de consulta HTTP URI.
2016 update : La forma más sencilla es utilizar la API de Google Apps Script, en particular, la Servicio SpreadSheet . Esto funciona para hojas privados, a diferencia de las otras respuestas que requieren la hoja de cálculo que se publicarán.
Esto le permitirá unen código JavaScript a una Hoja de Google, y ejecutarlo cuando se abre la hoja, o cuando se selecciona un elemento de menú (que se puede definir).
Aquí hay una de inicio rápido / Demostración . Los código es el siguiente:
// Let's say you have a sheet of First, Last, email and you want to return the email of the
// row the user has placed the cursor on.
function getActiveEmail() {
var activeSheet = SpreadsheetApp.getActiveSheet();
var activeRow = .getActiveCell().getRow();
var email = activeSheet.getRange(activeRow, 3).getValue();
return email;
}
Puede también publicar este tipo de scripts como aplicaciones web .
Hay una solución que no requiere en publicar la hoja de cálculo. Sin embargo, la hoja no tiene por qué ser 'compartida'. Más específicamente, hay que compartir la hoja de manera que cualquier persona con el enlace puede acceder a la hoja de cálculo. Una vez hecho esto, se puede utilizar las hojas de Google API HTTP.
En primer lugar, se necesita una clave API de Google. Entra aquí: https://developers.google.com/places/web-service/ conseguir-api-key NÓTESE BIEN. Tenga en cuenta de las ramificaciones de seguridad de tener una clave de API puesta a disposición del público: https: // support.google.com/googleapi/answer/6310037
Obtener todos los datos de una hoja de cálculo - advertencia, esto puede ser una gran cantidad de datos
.https://sheets.googleapis.com/v4/spreadsheets/{spreadsheetId}/?key={yourAPIKey}&includeGridData=true
Ver Hoja de metadatos
https://sheets.googleapis.com/v4/spreadsheets/{spreadsheetId}/?key={yourAPIKey}
Obtener un rango de celdas
https://sheets.googleapis.com/v4/spreadsheets/{spreadsheetId}/values/{sheetName}!{cellRange}?key={yourAPIKey}
Ahora armado con esta información, se puede utilizar AJAX para recuperar los datos y luego manipularla en JavaScript. Yo recomiendo usar axios .
var url = "https://sheets.googleapis.com/v4/spreadsheets/{spreadsheetId}/?key={yourAPIKey}&includeGridData=true";
axios.get(url)
.then(function (response) {
console.log(response);
})
.catch(function (error) {
console.log(error);
});
editar Este fue respondida antes de la API de Google Doc fue puesto en libertad. Ver respuesta de Evan solla y Dan respuesta de Dascalescu de más arriba-a-fecha información.
Parece lke se puede, pero es un dolor de usar. Se trata de utilizar la API de datos de Google.
http: //gdatatips.blogspot .com / 2008/12 / javascript usando-cliente-biblioteca-w-non.html
"La biblioteca de cliente JavaScript tiene métodos de ayuda para Calendario, Contactos, Blogger y Google Finance. Sin embargo, se puede usar con casi cualquier API de datos de Google para el acceso autenticado alimentaciones / privadas. En este ejemplo se utiliza la API Lista de documentos de".
y un ejemplo de escritura de un aparato que se interconecta con las hojas de cálculo: http: // código. google.com/apis/spreadsheets/gadgets/
'JavaScript para acceder a Google Docs' sería tedioso para poner en práctica y también, además, la documentación Google no es así de sencilla de conseguirlo. Tengo algunos buenos enlaces a la participación mediante el cual se puede lograr el acceso a js gdoc:
http://code.google.com/apis/spreadsheets/gadgets/
http://code.google.com/apis/gdata/docs/ js.html
http: //www.mail-archive. com/google-help-dataapi@googlegroups.com/msg01924.html
Puede ser esto le ayudaría a cabo ..
Lo sentimos, esta es una respuesta pésimo. Al parecer, este ha sido un tema durante casi dos años por lo no contener la respiración.
Esta es la solicitud oficial que pueda "estrella"
Probablemente el más cercano que puede venir es rodar su propio servicio con Google App Engine / Python y exponer cualquier subconjunto que necesita con su propia biblioteca de JS. Aunque me gustaría tener una solución mejor a mí mismo.
Para este tipo de cosa que usted debe usar Google Fusion . El API está diseñado para ese propósito.
Puede hacerlo mediante el uso de Sheetsee.js y tabletop.js
Estoy construyendo cabo Stein para ayudar a hacer precisamente eso. También proporciona una única solución HTML, si desea mostrar los datos directamente de la hoja. Compruébelo usted mismo en steinhq.com .
Se pueden leer datos de Google Hojas de hojas de cálculo en JavaScript utilizando el conector de láminas RGraph:
https://www.rgraph.net /canvas/docs/import-data-from-google-sheets.html
En un principio (hace unos años), esto se basó en algunas funciones RGraph para trabajar su magia -. Pero ahora se puede trabajar independiente (es decir, no requiere la biblioteca RGraph común)
un código de ejemplo (en este ejemplo hace un gráfico de RGraph):
<!-- Include the sheets library -->
<script src="RGraph.common.sheets.js"></script>
<!-- Include these two RGraph libraries to make the chart -->
<script src="RGraph.common.key.js"></script>
<script src="RGraph.bar.js"></script>
<script>
// Create a new RGraph Sheets object using the spreadsheet's key and
// the callback function that creates the chart. The RGraph.Sheets object is
// passed to the callback function as an argument so it doesn't need to be
// assigned to a variable when it's created
new RGraph.Sheets('1ncvARBgXaDjzuca9i7Jyep6JTv9kms-bbIzyAxbaT0E', function (sheet)
{
// Get the labels from the spreadsheet by retrieving part of the first row
var labels = sheet.get('A2:A7');
// Use the column headers (ie the names) as the key
var key = sheet.get('B1:E1');
// Get the data from the sheet as the data for the chart
var data = [
sheet.get('B2:E2'), // January
sheet.get('B3:E3'), // February
sheet.get('B4:E4'), // March
sheet.get('B5:E5'), // April
sheet.get('B6:E6'), // May
sheet.get('B7:E7') // June
];
// Create and configure the chart; using the information retrieved above
// from the spreadsheet
var bar = new RGraph.Bar({
id: 'cvs',
data: data,
options: {
backgroundGridVlines: false,
backgroundGridBorder: false,
xaxisLabels: labels,
xaxisLabelsOffsety: 5,
colors: ['#A8E6CF','#DCEDC1','#FFD3B6','#FFAAA5'],
shadow: false,
colorsStroke: 'rgba(0,0,0,0)',
yaxis: false,
marginLeft: 40,
marginBottom: 35,
marginRight: 40,
key: key,
keyBoxed: false,
keyPosition: 'margin',
keyTextSize: 12,
textSize: 12,
textAccessible: false,
axesColor: '#aaa'
}
}).wave();
});
</script>