Download-Link für den CSV-Export von Google Spreadsheets - mit mehreren Blättern

78

Ich versuche, einen Link zu finden, über den ich eine CSV-formatierte Version meiner Google-Tabelle herunterladen kann. Derzeit verwende ich:

https://docs.google.com/spreadsheets/d/DOCID/export?format=csv

Dies funktioniert hervorragend, außer dass nur das erste Blatt heruntergeladen wird. Mein Dokument hat mehrere Blätter. Weiß jemand, wie man diesen Link so formatiert, dass er entweder alle Blätter oder ein bestimmtes Blatt herunterlädt? Etwas wie:

&sheet=all

oder

&sheet=3
PlacateTheCattin
quelle
Die akzeptierte Antwort sollte die letzte sein: stackoverflow.com/a/50802790/462152
Filippo De Luca

Antworten:

161

Jedes Dokument in Google Sheets unterstützt das "Chart Tools-Datenquellenprotokoll", das in diesen Artikeln (eher willkürlich) erläutert wird:

  1. "Erstellen eines Diagramms aus einer separaten Tabelle"
  2. "Abfragesprachenreferenz"
  3. "Implementieren des Chart Tools-Datenquellenprotokolls"

Um ein bestimmtes Blatt als CSV-Datei herunterzuladen, ersetzen Sie es {key}durch die ID des Dokuments und {sheet_name}durch den Namen des zu exportierenden Blattes:

https://docs.google.com/spreadsheets/d/{key}/gviz/tq?tqx=out:csv&sheet={sheet_name}

Das Datenquellenprotokoll ist sehr flexibel. Verschiedene andere Optionen umfassen:

Antwortformat: Zu den Optionen gehören tqx=out:csv(CSV-Format), tqx=out:html(HTML-Tabelle) und tqx=out:json(JSON-Daten).

Teil eines Blattes exportieren : Geben Sie die range={range}Option an, bei der der Bereich ein beliebiger gültiger Bereichsspezifizierer sein kann, z . B. A1:C99oder B2:F.

Ausführen einer SQL-Abfrage: Geben Sie die tq={query}Option an, z tq=SELECT a, b, (d+e)*2 WHERE c < 100 AND x = 'yes'.

Textdatenheaders=0 exportieren : Geben Sie die Option an, falls Ihre Felder Textdaten enthalten, da diese sonst beim Export möglicherweise ausgeschnitten werden.

Kiwidrew
quelle
Das Stück, das ich nicht finden kann, ist die API-Oberfläche, die die Liste der Blätter / Gids für ein Dokument anzeigt. Daher ist es unmöglich, Dokumentblätter dynamisch zu durchlaufen.
Greg
2
@ Greg, Sie können die Liste der Blätter (Name und GID) über die Spreadsheets-API abrufen. Die zu verwendende URL lautet GET https://spreadsheets.google.com/feeds/worksheets/{fileId}/private/fullund Sie müssen OAuth verwenden, es sei denn, die Tabelle ist öffentlich.
Kiwidrew
2
Google hat etwas geändert. Funktioniert nicht mehr. Stattdessen erhalten Sie eine Umleitung, dass die Datei verschoben wurde. Dieser Link ist data.csv und Sie müssen ihn als zweiten Schritt herunterfahren.
Sherwood Botsford
1
Scheint eine Art von Verarbeitung durchzuführen, die nicht immer funktioniert und für einige Zellen Nullwerte zurückgibt.
Szotp
1
Das scheint (nicht mehr) zu funktionieren? docs.google.com/spreadsheets/d {key} / gviz / tq? tqx = out: csv & sheet = {sheet_name}
snh_nl
34
  1. Öffnen Sie Ihr Google-Blatt
  2. Klicken Sie auf die Schaltfläche "Teilen" und konfigurieren Sie "Jeder mit dem Link kann anzeigen".
  3. Drücken Sie F12, um die Debugging-Tools in Ihrem Webbrowser zu starten, und wählen Sie die Registerkarte "Net".
  4. Wählen Sie "Datei -> Download als -> Durch Kommas getrennte Werte .csv aktuelles Blatt" (oder ein beliebiges Format, z. B. xlsx, ods, pdf, html, csv oder tsv).
  5. Kopieren Sie die URL der GET-Anforderung von der Registerkarte "Net"

Es sieht ungefähr so ​​aus: https://docs.google.com/spreadsheets/d/KEY/export?format=csv&id=KEY&gid=SHEET_ID

Beachten Sie, dass der Parameter "gid" die Blatt-ID ist, die Sie am Ende der URL des geöffneten Google-Blattes finden. Referenz: https://developers.google.com/sheets/api/guides/concepts#sheet_id

Humbads
quelle
2
Scheint auch ohne den idParameter zu funktionieren, wie folgt
jrc
2
+1, weil Ihr Link in meinem Szenario funktioniert: Die akzeptierte Antwort scheint im Parameter sheet_name nicht zwischen Groß- und Kleinschreibung zu unterscheiden (dh foo und Foo laden immer das Blatt mit dem Namen foo für mich herunter), während die gid eindeutig ist, sodass dies immer funktioniert.
EsotericVoid
22

Dies ist ein Beispiel für CSV-Daten, die heruntergeladen werden können. Der Download-Link für diese Daten wurde so erstellt

  1. Öffnen Sie Google Sheet -> Leer -> Datei-> Öffnen
  2. Datei von "Mein Laufwerk" oder "Hochladen" öffnen
  3. Datei -> Im Web veröffentlichen -> Option "Blattname" und "CSV"
Partha Sen.
quelle
4
Ich bin mir nicht sicher, warum diese Antwort abgelehnt wurde. Es ist eine gute und gültige Antwort. Mit dieser Methode kann ich nicht authentifizierte CSV-URLs und sogar einen statischen Export einer bestimmten Version bereitstellen.
Feu
1
Möglicherweise liegt es daran, dass Google einige Minuten benötigt, um die veröffentlichte CSV zu aktualisieren.
Svetoslav Marinov
Weiß jemand, wie ich es herunterladen kann curl? Im Browser gibt es mir eine richtige CSV-Datei, Terminal erhält eine 'Temporäre Umleitung'.
kslstn
Diese Antwort sollte positiv bewertet werden, aber nicht unbedingt die Lösung sein. Der Kommentar von @ jrc zu dieser Antwort ( stackoverflow.com/a/44184071/160863 ) ist möglicherweise idealer, insbesondere für Programmierer. Hier ist eine funktionierende URL für einen CSV-Export (Hinweis: Das Blatt muss öffentlich zugänglich sein): docs.google.com/spreadsheets/d/…
Dancow
Update 18. November 2020: Früher funktionierte diese Antwort auch für private Blätter. Aber irgendwann vor kurzem hat Google eine wichtige Änderung hinzugefügt, die eine Authentifizierung für das Veröffentlichen in Weblinks erfordert, wenn das Blatt privat ist: issuetracker.google.com/issues/173534863
dancow
4

Ab November 2020 scheint die eleganteste und einfachste Lösung in der Antwort von @ jrc begraben zu sein :

https://docs.google.com/spreadsheets/d/KEY/export?format=csv&gid=SHEET_ID

Hier ist ein Live-Beispiel. angesichts des Google Sheet, das eine KEYvon hat1CTgM1g_aYoWFFpHU6A_qyqWGH0ulCFhs67uAcRVf1Rw

dh: https://docs.google.com/spreadsheets/d/1CTgM1g_aYoWFFpHU6A_qyqWGH0ulCFhs67uAcRVf1Rw

Fügen Sie :: hinzu, um den Permalink zu einem CSV-Export des ersten Blattes (dh gid=0) zu erhalten /export?format=csv&gid=0:

https://docs.google.com/spreadsheets/d/1CTgM1g_aYoWFFpHU6A_qyqWGH0ulCFhs67uAcRVf1Rw/export?format=csv&gid=0

Hinweis: Wenn Sie nur das erste Blatt exportieren, dh gid=0, entspricht die URL dem URL-Format, das in der ursprünglichen Frage angegeben wurde, d. H.

(Standardmäßig nimmt der Endpunkt an, gid=0wenn er nicht angegeben wird.)

https://docs.google.com/spreadsheets/d/DOCID/export?format=csv
tanzen
quelle
Es ist NICHT 'eleganteste und einfachste Lösung', kann gut für kantige Fälle 'Zugänglichkeit' sein.
Partha Sen
2
Es ist "am einfachsten", da es das gleiche Endpunktformat und die gleichen Konventionen verwendet, die GSheets während des größten Teils seiner Lebensdauer verwendet hat. Das Ableiten erfordert nicht mehr Arbeit oder Informationen als das, was der Benutzer bereits über die Blatt-URL hat. In der Lage zu sein, den Permalink sofort abzuleiten, ist kein "
Randfall
0

Das folgende URL-Format (als Vorlagenzeichenfolge) ist das einzige, das von mir funktioniert hat:

`https://docs.google.com/spreadsheets/d/e/${id}/pub?output=csv&id=${id}&gid=${gid}`

Dies setzt voraus, dass das gesamte Dokument im Web veröffentlicht wurde.

Tim Hettler
quelle