Come posso accedere ai fogli di calcolo di Google Sheet solo con Javascript?


101

Voglio accedere a Google Spreadsheets utilizzando solo JavaScript (no .NET, C #, Java, ecc.)

Sono venuto qui e sono rimasto scioccato nel sapere che NON esiste alcuna API per JavaScript per accedere a Fogli Google.

Per favore dimmi come accedere a (CREA / MODIFICA / CANCELLA) Fogli Google utilizzando JavaScript o uno dei suoi framework come jQuery.


1
il collegamento fornito contiene informazioni sull'utilizzo di JSON. dovresti essere in grado di usarlo in JavaScript.
GSto

1
@GSto sarebbe utile se tu mi potessi fornire alcune informazioni su questo. Lasciami tel u di nuovo voglio accedere al foglio di calcolo di Google tramite javascript.Grazie.
Pratik


Potrei prendere in considerazione l'utilizzo di Sheetsu. È abbastanza semplice per l'API JSON e limitato con la versione gratuita, ma semplifica davvero ciò di cui qualsiasi sviluppatore dovrebbe aver bisogno per utilizzare i fogli di calcolo di Google. Spero che questo aiuti alcune persone.
Jester

Risposte:


60

Ho creato una semplice libreria javascript che recupera i dati del foglio di calcolo di Google (se pubblicati) tramite l'API JSON:

https://github.com/mikeymckay/google-spreadsheet-javascript

Puoi vederlo in azione qui:

http://mikeymckay.github.com/google-spreadsheet-javascript/sample.html


3
Questo mi ha fatto risparmiare un sacco di tempo. Grazie mille! Tuttavia, ho deciso di eseguire il fork del codice, per essere in grado di gestire celle di dati vuote e anche di organizzarlo in righe (i dati restituiti così come sono sono solo un gigantesco array di celle, ma poiché le celle vuote non venivano tenuto conto, non c'era un modo semplice per organizzare i dati). L'aggiornamento era solo per il tuo metodo "callbackCells ()". Dai un'occhiata: github.com/rw3iss/google-spreadsheet-javascript.git Grazie ancora amico!
Ryan Weiss

5
La risposta di Evan Plaice stackoverflow.com/a/8666573/42082 contiene informazioni più dettagliate sull'API ufficiale di Google Docs e su come utilizzare quella del foglio di calcolo. Vale la pena dare un'occhiata.
Ape-inago

nuova versione API 3.0 e Oauth 2.0
PreguntonCojoneroCabrón

Sembra che Google abbia cambiato la politica e ora non funziona.
Chirag

50

Gennaio 2018 AGGIORNAMENTO : Quando ho risposto a questa domanda l'anno scorso, ho trascurato di menzionare un terzo modo per accedere alle API di Google con JavaScript, e sarebbe dalle app Node.js utilizzando la sua libreria client, quindi l'ho aggiunto di seguito.

È marzo 2017 e la maggior parte delle risposte qui sono obsolete: la risposta accettata ora si riferisce a una libreria che utilizza una versione API precedente. Una risposta più attuale: puoi accedere alla maggior parte delle API di Google solo con JavaScript. Google offre 3 modi per farlo oggi:

  1. Come accennato nella risposta di Dan Dascalescu , puoi utilizzare Google Apps Script , la soluzione JavaScript-in-Google-cloud. Ovvero, app JS lato server non Node esterne al browser che vengono eseguite sui server di Google.
  2. Puoi anche utilizzare la libreria client delle API di Google per JavaScript per accedere alla più recente API REST di Fogli Google sul lato client.
  3. Il terzo modo per accedere alle API di Google con JavaScript è dalle app Node.js utilizzando la sua libreria client . Funziona in modo simile all'utilizzo della libreria client JavaScript (client) descritta sopra, solo che accederai alla stessa API dal lato server. Ecco l'esempio di avvio rapido di Node.js per Fogli. Potresti trovare i video basati su Python sopra per essere ancora più utili in quanto anche loro accedono all'API dal lato server.

Quando si utilizza l'API REST, è necessario gestire e memorizzare il codice sorgente nonché eseguire l'autorizzazione eseguendo il rollio del proprio codice di autenticazione (vedere esempi sopra). Apps Script gestisce questo per tuo conto, gestendo i dati (riducendo il "dolore" come menzionato da Ape-inago nella loro risposta ), e il tuo codice viene memorizzato sui server di Google. Ma la tua funzionalità è limitata ai servizi forniti da App Script, mentre l'API REST offre agli sviluppatori un accesso molto più ampio all'API. Ma ehi, è bello avere delle scelte, giusto? In sintesi, per rispondere alla domanda originale dell'OP, invece di zero, gli sviluppatori hanno tre modi per accedere a Fogli Google utilizzando JavaScript.


35

Ecco il succo.

Puoi creare un foglio di lavoro utilizzando l' API di Fogli Google . Al momento non è possibile eliminare un foglio di calcolo utilizzando l'API (leggi la documentazione). Pensa all'API di Google Docs come al percorso per creare e cercare documenti.

È possibile aggiungere / rimuovere fogli di lavoro all'interno del foglio di calcolo utilizzando i feed basati sul foglio di lavoro .

L'aggiornamento di un foglio di calcolo viene eseguito tramite feed basati su elenchi o feed basati su celle .

La lettura del foglio di lavoro può essere eseguita tramite le API di fogli di lavoro di Google sopra menzionate o, solo per i fogli pubblicati , utilizzando il linguaggio di query dell'API di visualizzazione di Google per eseguire query sui dati (che può restituire risultati in formato tabella CSV, JSON o HTML).


Dimentica jQuery. jQuery è davvero utile solo se stai attraversando il DOM. Poiché GAS (Google Apps Scripting) non utilizza DOM jQuery, non aggiungerà alcun valore al tuo codice. Attenersi alla vaniglia.

Sono davvero sorpreso che nessuno abbia ancora fornito queste informazioni in una risposta. Non solo può essere fatto, ma è relativamente facile da fare usando vanilla JS. L'unica eccezione è l'API di visualizzazione di Google che è relativamente nuova (a partire dal 2011). L'API di visualizzazione funziona anche esclusivamente tramite un URI della stringa di query HTTP.


13

C'è una soluzione che non richiede la pubblicazione del foglio di calcolo. Tuttavia, il foglio deve essere "Condiviso". Più specificamente, è necessario condividere il foglio in un modo in cui chiunque abbia il collegamento può accedere al foglio di calcolo. Fatto ciò, è possibile utilizzare l'API HTTP di Fogli Google.

Per prima cosa, hai bisogno di una chiave API di Google. Vai qui: https://developers.google.com/places/web-service/get-api-key NB. Tieni presente le implicazioni per la sicurezza di avere una chiave API resa disponibile al pubblico: https://support.google.com/googleapi/answer/6310037

Ottieni tutti i dati per un foglio di calcolo: attenzione, possono trattarsi di molti dati.

https://sheets.googleapis.com/v4/spreadsheets/{spreadsheetId}/?key={yourAPIKey}&includeGridData=true

Ottieni i metadati del foglio

https://sheets.googleapis.com/v4/spreadsheets/{spreadsheetId}/?key={yourAPIKey}

Ottieni un intervallo di celle

https://sheets.googleapis.com/v4/spreadsheets/{spreadsheetId}/values/{sheetName}!{cellRange}?key={yourAPIKey}

Ora armati di queste informazioni, è possibile utilizzare AJAX per recuperare i dati e quindi manipolarli in JavaScript. Consiglierei di usare 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);                                                                                                                                                       
  });                

Cosa sono i dati della griglia?
William Entriken

@WilliamEntriken Il contenuto delle celle.
robsco

11

Aggiornamento 2016 : il modo più semplice è utilizzare l'API di Google Apps Script, in particolare lo SpreadSheet Service . Funziona per i fogli privati, a differenza delle altre risposte che richiedono la pubblicazione del foglio di calcolo.

Ciò ti consentirà di associare il codice JavaScript a un foglio Google ed eseguirlo quando il foglio viene aperto o quando viene selezionata una voce di menu (che puoi definire).

Ecco un Quickstart / Demo . Il codice ha questo aspetto:

// 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;
}

Puoi anche pubblicare tali script come app web .


6

modifica: questa è stata risposta prima del rilascio dell'API del documento Google. Vedi la risposta di Evan Plaice e la risposta di Dan Dascalescu per ulteriori informazioni up-to-date.

Sembra che tu possa, ma è un dolore da usare. Implica l'utilizzo dell'API di dati di Google.

http://gdatatips.blogspot.com/2008/12/using-javascript-client-library-w-non.html

"La libreria client JavaScript ha metodi di supporto per Calendar, Contatti, Blogger e Google Finanza. Tuttavia, puoi utilizzarla con quasi tutte le API di dati di Google per accedere a feed autenticati / privati. Questo esempio utilizza l'API DocList."

e un esempio di scrittura di un gadget che si interfaccia con i fogli di lavoro: http://code.google.com/apis/spreadsheets/gadgets/


perché lo chiami "dolore". che male c'è nel farlo?
Pratik

1
Un problema perché non ha un'API nativa, il che significa che devi eseguire molte analisi e manipolazione dei dati da solo. un'API di foglio di calcolo nativa fornirà questi per te.
Ape-inago

4

'JavaScript che accede a Google Docs' sarebbe noioso da implementare e inoltre la documentazione di Google non è così semplice da ottenere. Ho alcuni buoni collegamenti da condividere con cui puoi ottenere l'accesso js a gdoc:

http://code.google.com/apis/documents/docs/3.0/developers_guide_protocol.html#UploadingDocs

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

Forse questi ti aiuterebbero ..


8
il collegamento 1 sarà obsoleto Il 20 aprile 2015, errore di collegamento 2 404, collegamento 3 v2.0 deprecato, collegamento 4 deprecato
vladkras

2

Scusa, questa è una risposta scadente. Apparentemente questo è stato un problema per quasi due anni, quindi non trattenere il respiro.

Ecco la richiesta ufficiale che puoi "star"

Probabilmente la cosa più vicina a cui puoi arrivare è lanciare il tuo servizio con Google App Engine / Python ed esporre qualsiasi sottoinsieme di cui hai bisogno con la tua libreria JS. Anche se mi piacerebbe avere una soluzione migliore io stesso.





1

Puoi leggere i dati dei fogli di lavoro di Fogli Google in JavaScript utilizzando il connettore dei fogli RGraph:

https://www.rgraph.net/canvas/docs/import-data-from-google-sheets.html

Inizialmente (qualche anno fa) questo si basava su alcune funzioni RGraph a lavorare la sua magia - ma ora si può lavorare stand-alone (cioè che non richiedono la libreria comune RGraph).

Qualche codice di esempio (questo esempio crea un grafico 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>

E ora c'è una versione PHP dell'utilità di importazione - disponibile allo stesso URL
Richard

0

Sto costruendo Stein per aiutarti a fare proprio questo. Fornisce anche una soluzione solo HTML, se desideri visualizzare i dati direttamente dal foglio. Dai un'occhiata a steinhq.com .

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.