Import JSON-Daten in Google Sheets
-
27-09-2019 - |
Frage
Ich bin ziehen Daten von einem Webdienst, und es wird als JSON formatiert. Ich schreibe ein Google Apps Script für Google Tabellen, die die Daten für mich bevölkern werden. Mein Problem ist, ich kann es nicht scheinen, um zu analysieren, aus.
Doing:
var dataset = myJSONtext;
Browser.msgbox(dataset.item[0].key);
Fehler heraus und sagt:
Artikel [0] nicht definiert ist.
Gibt es irgendeine Art und Weise in baute ich dies tun sollte?
Lösung
Apps Script ist (ziemlich) nur Javascript; plain-alt JSON.parse
ist die beste Wahl für JSON in eine Objektdarstellung Parsen.
Sie können auch JSON.stringify
verwenden, um ein Objekt in eine String-Darstellung serialisiert werden.
Andere Tipps
Für diejenigen, die dies in 2011+, wie wies darauf hin, sehen von Henrique Abreu im Google Support-Forum, Utilities.jsonParse wird / werden als veraltet. Wie Sie aus dem Thread sehen können, gibt es ein Problem mit dieser Funktion, dass es nicht funktioniert, wenn Sie Ihre Schlüssel sind Zahlen, dh „1234“.
Wie bereits angedeutet, sollten Sie JSON.stringify / Parsen verwenden werden.
A 2013 Update - Schauen Sie sich die ImportJSON Bibliothek unter
http://blog.fastfedora.com/projects/import-json
„ImportJSON importieren Daten aus öffentlichen JSON APIs in Google Text & Tabellen. Es zielt darauf ab, wie die native Google-Tabelle Funktionen ImportData- und ImportXML Arbeit in ähnlicher Weise zu betreiben.“
-Code hier und er hat es mit dem Script Gallery vorgelegt: https://raw.github.com/fastfedora/google-docs/master/ scripts / ImportJSON / Code.gs
Beispiel Nutzung: Nachdem Sie den Code in Ihrer Google-Tabelle der Skript-Editor setzte, dann fügen Sie diese in Zelle A1 des Blattes:
=ImportJSON("http://gdata.youtube.com/feeds/api/standardfeeds/most_popular?v=2&alt=json", "/feed/entry/title,/feed/entry/content", "noInherit,noTruncate,rawHeaders")
Mit diesem Kern: https://gist.github.com/varun-raj/5350595a730a62ca1954
Ersetzen
http://example.com/feeds?type=json
mit JSON-URL
Fügen Sie Ihre Entitäten hier
rows.push([data.id, data.name,data.email]);