Grundkenntnisse

Mit der Google Sheets API können Sie Werte und Formeln in Zellen, Bereiche, Gruppen von Bereichen und ganze Tabellenblätter schreiben. Die Beispiele auf dieser Seite veranschaulichen, wie einige gängige Schreibvorgänge mit der Ressource spreadsheets.values der Sheets API realisiert werden können.

Es ist auch möglich, Zellenwerte mit der Methode spreadsheet.batchUpdate zu schreiben. Dies kann nützlich sein, wenn Sie gleichzeitig die Zellenformatierung oder andere Eigenschaften aktualisieren möchten, auf die sich die Ressource spreadsheets.values nicht auswirkt. Wenn Sie beispielsweise einen Zellenbereich von einem Tabellenblatt in ein anderes kopieren und dabei sowohl die Zellenformel als auch die Zellenformatierung überschreiben möchten, können Sie die Methode UpdateCellsRequest mit einer spreadsheet.batchUpdate verwenden.

Für einfache Wertschreibvorgänge ist es jedoch einfacher, die Methode spreadsheets.values.update oder spreadsheets.values.batchUpdate zu verwenden.

Diese Beispiele werden in Form von HTTP-Anfragen präsentiert, um sprachneutral zu sein. Informationen zum Implementieren von Schreibvorgängen in verschiedenen Sprachen mithilfe der Google API-Clientbibliotheken finden Sie unter Zellenwerte lesen und schreiben.

In diesen Beispielen gibt der Platzhalter SPREADSHEET_ID an, wo Sie die Tabellen-ID angeben müssen, die Sie der Tabellen-URL entnehmen können. Die Bereiche, in die geschrieben werden soll, werden in der A1-Notation angegeben. Ein Beispielbereich ist Sheet1!A1:D5.

Einzelnen Bereich schreiben

Das folgende Codebeispiel für spreadsheets.values.update zeigt, wie Sie die Werte in einen Bereich schreiben, beginnend mit einer neuen, leeren Tabelle. Der Abfrageparameter ValueInputOption ist erforderlich und bestimmt, ob die geschriebenen Werte geparst werden, z. B. ob ein String in ein Datum umgewandelt wird oder nicht.

Der Anfragetext ist ein ValueRange-Objekt, das die zu schreibenden Bereichswerte beschreibt. Das Feld majorDimension gibt an, dass die Arrays Listen von Werten sind, die nach Zeilen angeordnet sind. Vorhandene Werte im Zielbereich werden überschrieben.

Das Anfrageprotokoll ist unten dargestellt.

PUT https://sheets.googleapis.com/v4/spreadsheets/SPREADSHEET_ID/values/Sheet1!A1:D5?valueInputOption=VALUE_INPUT_OPTION
{
  "range": "Sheet1!A1:D5",
  "majorDimension": "ROWS",
  "values": [
    ["Item", "Cost", "Stocked", "Ship Date"],
    ["Wheel", "$20.50", "4", "3/1/2016"],
    ["Door", "$15", "2", "3/15/2016"],
    ["Engine", "$100", "1", "3/20/2016"],
    ["Totals", "=SUM(B2:B4)", "=SUM(C2:C4)", "=MAX(D2:D4)"]
  ],
}

Die Antwort besteht aus einem UpdateValuesResponse-Objekt wie diesem:

{
  "spreadsheetId": SPREADSHEET_ID,
  "updatedRange": "Sheet1!A1:D5",
  "updatedRows": 5,
  "updatedColumns": 4,
  "updatedCells": 20,
}

Das resultierende Tabellenblatt sieht so aus:

A B C D
1 Artikel Kosten Auf Lager Versanddatum
2 Wheel Riesenrad 20,50 $ 4 01.03.2016
3 Tür $15 2 15.03.2016
4 Engine 100 $ 1 20.03.2016
5 Summen 135,50 $ 7 20.03.2016

Selektiv in einen Bereich schreiben

Wenn Sie Werte in einen Bereich schreiben, können Sie die entsprechenden Arrayelemente auf null setzen, um eine Änderung einiger vorhandener Zellen zu vermeiden. Sie können eine Zelle auch löschen, indem Sie einen leeren String ("") in sie schreiben.

Das folgende Codebeispiel für spreadsheets.values.update zeigt, wie Sie die Werte in den Bereich B1:D4 schreiben, wobei einige Zellen selektiv unverändert bleiben und andere gelöscht werden. Das Tabellenblatt enthält dieselben Daten, die im Beispiel oben erzeugt wurden. Der Abfrageparameter ValueInputOption ist erforderlich und bestimmt, ob die geschriebenen Werte geparst werden, z. B. ob ein String in ein Datum umgewandelt wird oder nicht.

Der Anfragetext ist ein ValueRange-Objekt, das die zu schreibenden Bereichswerte beschreibt. Das Feld majorDimension gibt an, dass die Arrays Listen von Werten sind, die nach Spalten organisiert sind.

Das Anfrageprotokoll ist unten dargestellt.

PUT https://sheets.googleapis.com/v4/spreadsheets/SPREADSHEET_ID/values/Sheet1!B1?valueInputOption=VALUE_INPUT_OPTION
{
  "range": "Sheet1!B1",
  "majorDimension": "COLUMNS",
  "values": [
    [null,"$1","$2", ""],
    [],
    [null,"4/1/2016", "4/15/2016", ""]
  ]
}

Im Feld values werden die Änderungen aufgelistet, die an jeder Spalte im Bereich vorgenommen wurden. Das erste Array gibt an, dass B1 unverändert bleiben soll (aufgrund des Arrayelements null), während B4 gelöscht werden soll (leerer String). die Werte von B2 und B3 aktualisiert werden. Das dritte Array führt die gleichen Operationen für Spalte D aus, während das zweite leere Array anzeigt, dass Spalte C unverändert gelassen werden soll.

Die Antwort besteht aus einem UpdateValuesResponse-Objekt wie diesem:

{
  "spreadsheetId": SPREADSHEET_ID,
  "updatedRange": "Sheet1!B1:D5",
  "updatedRows": 3,
  "updatedColumns": 2,
  "updatedCells": 6,
}

Das resultierende Tabellenblatt sieht so aus:

A B C D
1 Artikel Kosten Auf Lager Versanddatum
2 Wheel Riesenrad 1,00 $ 4 01.04.2016
3 Tür 2 € 2 15.04.2016
4 Engine 1
5 Summen 3,00 $ 7 15.04.2016

Die Zeile „Summen“ ändert sich zwar nicht direkt durch diese Anfrage, aber ihre Zellen enthalten Formeln, die von den geänderten Zellen abhängen.

In mehrere Bereiche schreiben

Das folgende Codebeispiel spreadsheets.values.batchUpdate beginnt mit einem leeren Tabellenblatt. Hier sehen Sie, wie die Werte in die Bereiche Sheet1!A1:A4 und Sheet1!B1:D2 geschrieben werden. Vorhandene Werte im Zielbereich werden überschrieben. Der Anfragetext besteht aus einem ValueInputOption-Objekt, das zeigt, wie die Eingabedaten interpretiert werden, und einem Array von ValueRange-Objekten, die jedem geschriebenen Bereich entsprechen. Das Feld majorDimension bestimmt, ob die enthaltenen Arrays als Arrays von Spalten oder Zeilen interpretiert werden.

Das Anfrageprotokoll ist unten dargestellt.

POST https://sheets.googleapis.com/v4/spreadsheets/SPREADSHEET_ID/values:batchUpdate
{
  "valueInputOption": "VALUE_INPUT_OPTION",
  "data": [
    {
      "range": "Sheet1!A1:A4",
      "majorDimension": "COLUMNS",
      "values": [
        ["Item", "Wheel", "Door", "Engine"]
      ]
    },
    {
      "range": "Sheet1!B1:D2",
      "majorDimension": "ROWS",
      "values": [
        ["Cost", "Stocked", "Ship Date"],
        ["$20.50", "4", "3/1/2016"]
      ]
    }
  ]
}

Die Antwort besteht aus einem Objekt, das die aktualisierten Zellenstatistiken auflistet, und einem Array mit UpdateValuesResponse-Objekten, eines für jeden aktualisierten Bereich. Beispiel:

{
  "spreadsheetId": SPREADSHEET_ID,
  "totalUpdatedRows": 4,
  "totalUpdatedColumns": 4,
  "totalUpdatedCells": 10,
  "totalUpdatedSheets": 1,
  "responses": [
    {
      "spreadsheetId": SPREADSHEET_ID,
      "updatedRange": "Sheet1!A1:A4",
      "updatedRows": 4,
      "updatedColumns": 1,
      "updatedCells": 4,
    },
    {
      "spreadsheetId": SPREADSHEET_ID,
      "updatedRange": "Sheet1!B1:D2",
      "updatedRows": 2,
      "updatedColumns": 3,
      "updatedCells": 6,
    }
  ],
}

Das resultierende Tabellenblatt sieht so aus:

A B C D
1 Artikel Kosten Auf Lager Versanddatum
2 Wheel Riesenrad 20,50 $ 4 01.03.2016
3 Tür
4 Engine
5

Werte ohne Parsen schreiben

Das folgende Codebeispiel spreadsheets.values.update zeigt, wie die Werte in den Bereich Sheet1!A1:E1 geschrieben werden. Sie beginnen mit einem leeren Tabellenblatt. Dabei wird der Abfrageparameter RAW ValueInputOption verwendet, um zu verhindern, dass die geschriebenen Strings als Formeln, booleschen Werte oder Zahlen geparst werden. Sie erscheinen als Zeichenfolgen und die Textausrichtung ist im Blatt entsprechend ausgerichtet.

Der Anfragetext ist ein ValueRange-Objekt, das die zu schreibenden Bereichswerte beschreibt. Das Feld majorDimension gibt an, dass die Arrays Listen von Werten sind, die nach Zeilen angeordnet sind. Vorhandene Werte im Zielbereich werden überschrieben.

Das Anfrageprotokoll ist unten dargestellt.

PUT https://sheets.googleapis.com/v4/spreadsheets/SPREADSHEET_ID/values/Sheet1!A1:E1?valueInputOption=RAW
{
  "range": "Sheet1!A1:E1",
  "majorDimension": "ROWS",
  "values": [
    ["Data", 123.45, true, "=MAX(D2:D4)", "10"]
  ],
}

Die Antwort besteht aus einem UpdateValuesResponse-Objekt wie diesem:

{
  "spreadsheetId": SPREADSHEET_ID,
  "updatedRange": "Sheet1!A1:E1",
  "updatedRows": 1,
  "updatedColumns": 5,
  "updatedCells": 5,
}

Das resultierende Tabellenblatt sieht so aus:

A B C D E
1 Daten 123,45 TRUE =MAX(D2:D4) 10
2

„TRUE“ ist zentriert und ein boolescher Wert, während „123.45“ rechtsbündig ist, da es sich um eine Zahl handelt, und „10“ linksbündig, weil es sich um einen String handelt. Die Formel wird nicht geparst und erscheint auch als String.

Werte anhängen

Beginnen Sie mit einem Tabellenblatt wie der folgenden Tabelle:

A B C D
1 Artikel Kosten Auf Lager Versanddatum
2 Wheel Riesenrad 20,50 $ 4 01.03.2016
3

Das folgende Codebeispiel spreadsheets.values.append zeigt, wie zwei neue Zeilen mit Werten beginnend mit Zeile 3 hinzugefügt werden. Der Abfrageparameter ValueInputOption ist erforderlich und bestimmt, ob die geschriebenen Werte geparst werden, z. B. ob ein String in ein Datum umgewandelt wird oder nicht.

Der Anfragetext ist ein ValueRange-Objekt, das die zu schreibenden Bereichswerte beschreibt. Das Feld majorDimension gibt an, dass die Arrays Listen von Werten sind, die nach Zeilen angeordnet sind.

Das Anfrageprotokoll ist unten dargestellt.

POST https://sheets.googleapis.com/v4/spreadsheets/SPREADSHEET_ID/values/Sheet1!A1:E1:append?valueInputOption=VALUE_INPUT_OPTION
{
  "range": "Sheet1!A1:E1",
  "majorDimension": "ROWS",
  "values": [
    ["Door", "$15", "2", "3/15/2016"],
    ["Engine", "$100", "1", "3/20/2016"],
  ],
}

Die Antwort besteht aus einem AppendValuesResponse-Objekt wie diesem:

{
  "spreadsheetId": SPREADSHEET_ID,
  "tableRange": "Sheet1!A1:D2",
  "updates": {
    "spreadsheetId": SPREADSHEET_ID,
    "updatedRange": "Sheet1!A3:D4",
    "updatedRows": 2,
    "updatedColumns": 4,
    "updatedCells": 8,
  }
}

Das resultierende Tabellenblatt sieht so aus:

A B C D
1 Artikel Kosten Auf Lager Versanddatum
2 Wheel Riesenrad 20,50 $ 4 01.03.2016
3 Tür $15 2 15.03.2016
4 Engine 100 $ 1 20.03.2016
5