Wie kann ich Blatt Tabellen Google nur mit Javascript zugreifen?
Frage
Ich möchte den Zugriff auf Google Text & Tabellen mit nur JavaScript (kein .NET, C #, Java, etc.)
Ich kam hier und war schockiert zu wissen, dass es keine API für JavaScript den Zugriff auf Google Sheets.
Bitte sagen Sie mir, wie man Zugang (Erstellen / Ändern / Löschen) Google Sheets mit JavaScript oder einem seiner Frameworks wie jQuery.
Lösung
Ich habe eine einfache JavaScript-Bibliothek erstellt, die Tabellendaten abruft Google (wenn sie veröffentlicht wird) über die JSON api:
https://github.com/mikeymckay/google-spreadsheet-javascript
Sie können es in Aktion sehen hier:
http://mikeymckay.github.com/google-spreadsheet-javascript/ sample.html
Andere Tipps
Januar 2018 UPDATE : Wenn ich diese Frage im letzten Jahr sprach: Ich vernachlässigt eine erwähnen dritte Art und Weise den Zugriff auf Google APIs mit JavaScript, und dass von Knoten sein würde. js apps mit seinem Client-Bibliothek, so dass ich es unten hinzugefügt.
Es ist März 2017 , und die meisten Antworten hier überholt sind - die akzeptierte Antwort bezieht sich nun auf eine Bibliothek, die eine ältere API-Version. Eine aktuelle Antwort: Sie können den Zugriff die meisten Google-APIs mit JavaScript nur. Google bietet drei Möglichkeiten, dies zu tun heute:
- erwähnt Wie in der Antwort von Dan Dascalescu , können Sie a href verwenden <= "http: // Entwickler. google.com/apps-script“rel = "noreferrer"> Google Apps Script , die JavaScript-in-Googles-Cloud-Lösung. Das heißt, nicht-Node serverseitige JS apps außerhalb des Browsers, dass Run auf den Google-Servern.
- Sie codieren Ihre Anwendungen in der Apps Script-Code-Editor , und sie können in zwei Google Sheets verschiedene Möglichkeiten zuzugreifen:
- Die Tabellenkalkulations-Service (native Objektträger; Usage Guide ); nativer ist einfacher, aber ist in der Regel älter als ...
- Die Google Sheets Advanced Service (direkt die neueste Version von Google Tabellen REST-API [siehe unten]; Usage Guide )
- Apps Script auch Kräfte Add-ons , und Sie können Blätter verlängern UI-Funktionalität mit Sheets-Add-ons (wie diese )
- Sie können sogar schreiben Mobile-Add-ons , die das erweitern Tabellen App auf Android
- Wenn Sie mehr über Apps Script mit Besuche diese Videos I‘ ve erstellt (die meisten die Verwendung von Sheets beinhalten)
- Sie codieren Ihre Anwendungen in der Apps Script-Code-Editor , und sie können in zwei Google Sheets verschiedene Möglichkeiten zuzugreifen:
- Sie können auch die Google APIs-Client-Bibliothek für JavaScript die für den Zugriff auf neuesten Google Sheets REST API auf der Client-Seite.
- Hier werden einige allgemeine Proben die Client-Bibliothek verwenden
- Die neueste Sheets API (v4) war freigegeben bei Google I / O 2016; es ist viel mächtiger als alle früheren Versionen in den Sheets Entwickler programmatischen Zugriff auf die meisten Funktionen geben UI
- Hier ist der JavaScript quickstart für die API, um Ihnen den Einstieg
- Hier sind Probe "Rezepte" (JSON Nutzlasten) für Anfragen Kern API
- Wenn Sie nicht „allergisch“ auf Python sind (wenn Sie sind, nur um es den Pseudo-Code so tun;)), machte ich mehrere Videos mit mehr „real-world“ Proben mithilfe der API Sie aus und wandern zu JS lernen können wenn gewünscht (Hinweis: auch wenn es Python c istode, die meisten API-Anfragen haben JSON und leicht tragbar zu JS):
- Migrating SQL-Daten auf einem Blatt (Code Tieftauchgang Post )
- Formatieren von Text mit der Sheets API (Code Tieftauchgang Post )
- Generieren von Folien aus Tabellendaten (Code Tieftauchgang Post )
- Die dritte Möglichkeit, den Zugriff auf Google APIs mit JavaScript ist von Node.js mit apps seinen Kunden Bibliothek . Es funktioniert ähnlich der JavaScript (Client) Client-Bibliothek mit nur oben beschrieben, nur werden Sie die gleiche API von der serverseitigen Zugriff werden. Hier die Node.js Quickstart Beispiel für Bleche. Sie können die Python-basierten Videos oben zu finden sein noch nützliche, da sie zu dem API von der Server-Seite zugreifen zu können.
Wenn Sie den REST-API verwenden, müssen Sie verwalten und speichern Sie Ihre Quellcode sowie Genehmigung durchführen, indem Sie Ihren eigenen Auth-Code rollen (siehe Beispiele oben). Apps Script behandelt dies in Ihrem Namen, die die Verwaltung von Daten (Reduzierung des „Schmerzes“, wie erwähnt von Ape-inago in ihrer Antwort ) und der Code auf dem Google-Servern gespeichert. Aber Ihre Funktionalität ist beschränkt auf, welche Dienste App Script bietet und es ist älter JS (ES3 + einige ES5 verfügt und Google-Anpassungen), während die REST-API-Entwickler viel breiteren Zugriff auf die API gibt. Aber hey, es ist eine gute Wahl zu haben, nicht wahr? Zusammenfassend die OP ursprüngliche Frage zu beantworten, statt Null, Entwickler haben drei Möglichkeiten für den Zugriff von Google Tabellen mit Hilfe von JavaScript.
Hier ist der Gist.
Sie können eine Tabelle erstellen mit dem Google Sheets API . Es gibt derzeit keine Möglichkeit, eine Tabelle mit Hilfe der API (lesen Sie in der Dokumentation) zu löschen. Denken Sie an Google Docs API als die Route zu erstellen und Nachschlage-Dokumente.
Sie können hinzufügen / entfernen Arbeitsblatt in der Tabelle mit den Funktionen des Arbeitsblatt basierend Feeds .
Aktualisieren einer Tabelle erfolgt entweder über Liste basiert Feeds oder zellbasierte Feeds .
Das Lesen der Tabelle kann erreicht werden durch entweder die Google Tabellen-APIs oben genannten oder für veröffentlichte Blätter nur , mit der Google Visualization API Query language Abfrage die Daten (die Ergebnisse in CSV, JSON oder HTML-Tabellenformat zurückkehren kann).
Vergessen jQuery. jQuery ist nur dann wirklich wertvoll, wenn Sie das DOM sind durchquert. Da GAS (Google Apps Scripting) verwendet nicht den DOM jQuery wird keinen Wert, um Ihren Code hinzufügen. Halten Sie sich an Vanille.
Ich bin wirklich überrascht, dass niemand diese Informationen in einer Antwort noch zur Verfügung gestellt hat. Nicht nur können es getan werden, aber es ist relativ einfach, mit Vanille JS zu tun. Die einzige Ausnahme ist die Google Visualization API, die relativ neu ist (Stand 2011). Die Visualization API auch ausschließlich über einen HTTP-Abfrage-String URI funktioniert.
2016 Update : Der einfachste Weg ist es, das Google Apps Script-API zu verwenden, insbesondere die Tabellenkalkulations Services . Dies funktioniert für private Blätter, im Gegensatz zu den anderen Antworten, die die Tabelle erfordern veröffentlicht werden.
Dies wird Sie binden JavaScript-Code in eine Google-Tabelle lassen, und es ausführen, wenn das Blatt geöffnet wird, oder wenn ein Menüpunkt (die Sie definieren können) ausgewählt ist.
Hier ist ein Quickstart / Demo . Der Code sieht wie folgt aus:
// 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;
}
Sie können auch veröffentlichen solche Skripte als Web-Anwendungen .
Es gibt eine Lösung, die nicht ein erfordert, um die Tabelle zu veröffentlichen. Allerdings ist das Blatt sein ‚Shared‘ benötigen. Genauer gesagt, muss man das Blatt in einer Art und Weise teilen, wo alle mit dem Link die Tabelle zugreifen können. Sobald dies geschehen ist, kann man die Google-Tabelle HTTP-API verwenden.
Als erstes benötigen Sie einen Google API-Schlüssel. Gehen Sie hier: https://developers.google.com/places/web-service/ get-api-key NB. Bitte beachten Sie die Sicherheitsfolgen von API-Schlüssel, die für die Öffentlichkeit zugänglich gemacht werden: https: // support.google.com/googleapi/answer/6310037
Get alle Daten für eine Tabelle - Warnung, kann dies eine Menge von Daten sein
.https://sheets.googleapis.com/v4/spreadsheets/{spreadsheetId}/?key={yourAPIKey}&includeGridData=true
Get Blatt Metadaten
https://sheets.googleapis.com/v4/spreadsheets/{spreadsheetId}/?key={yourAPIKey}
Get eine Reihe von Zellen
https://sheets.googleapis.com/v4/spreadsheets/{spreadsheetId}/values/{sheetName}!{cellRange}?key={yourAPIKey}
Jetzt mit diesen Informationen bewaffnet, kann man AJAX verwenden, um Daten abzurufen und zu manipulieren, um sie dann in JavaScript. Ich würde empfehlen, mit 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);
});
edit: Dies beantwortet wurde, bevor die api google doc veröffentlicht wurde. Siehe Evan Plaice Antwort und Dan Dascalescu Antwort für mehr up-to-date Informationen.
Es sieht lke können Sie, aber es ist ein Schmerz zu verwenden. Es geht um die Daten von Google-API verwenden.
http: //gdatatips.blogspot .com / 2008/12 / mit-Javascript-Client-Bibliothek-w-non.html
„Die JavaScript-Client-Bibliothek hat Hilfsmethoden für Kalender, Kontakte, Blogger und Google Finance. Aber Sie es mit fast allen Google-Daten-API für den Zugriff authentifiziert / private Feeds verwenden können. Dieses Beispiel verwendet die DocList API.“
und ein Beispiel für ein Gadget, das Schnittstellen mit Tabellen zu schreiben: http: // Code. google.com/apis/spreadsheets/gadgets/
‚JavaScript Zugriff auf Google Docs‘ wäre mühsam zu implementieren und zudem Google-Dokumentation ist auch nicht so einfach zu bekommen. Ich habe ein paar gute Links zu teilen, mit denen Sie js Zugang zu gDoc erreichen können:
http://code.google.com/apis/ Dokumente / 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
Kann sein, diese würden Sie helfen ..
Sorry, das ist eine lausige Antwort. Offenbar ist dies fast zwei Jahre eine Ausgabe so nicht halten Sie Ihren Atem.
Hier ist die offizielle Anfrage, dass Sie "Stern"
Wahrscheinlich die nächstgelegene Sie kommen kann, ist mit Google App Engine / Python Ihren eigenen Service rollen und das Aussetzen was Subset Sie mit Ihrer eigenen JS-Bibliothek benötigen. Obwohl ich würde gerne selbst eine bessere Lösung haben.
Für diese Art der Sache sollten Sie Google Fusion Tables . Die API ist für diesen Zweck konzipiert.
Sie können es tun, indem Sie Sheetsee.js und tabletop.js
Ich bin Stein bauen helfen Sie genau das tun. Es bietet auch eine HTML einzige Lösung, sollten Sie wollen Daten aus dem Blatt gerade angezeigt werden soll. Check it out unter steinhq.com .
Sie können mit Hilfe der RGraph Blätter Stecker Google Tabellen Tabellen Daten in JavaScript lesen:
https://www.rgraph.net /canvas/docs/import-data-from-google-sheets.html
Am Anfang (vor ein paar Jahren) verließ sich dies auf einigen RGraph Funktionen seine Magie zu arbeiten -. Aber jetzt kann es funktionieren Standalone (dh nicht die RGraph gemeinsame Bibliothek erforderlich)
Einiger Beispiel-Code (in diesem Beispiel macht eine RGraph Grafik):
<!-- 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>