Charts

Mit der Google Sheets API können Sie nach Bedarf Diagramme in Tabellen erstellen und aktualisieren. Die Beispiele auf dieser Seite veranschaulichen, wie Sie mit der Sheets API einige gängige Diagrammvorgänge ausführen können.

Diese Beispiele werden in Form von HTTP-Anfragen präsentiert, um sprachneutral zu sein. Informationen zum Implementieren einer Batch-Aktualisierung in verschiedenen Sprachen mithilfe der Google API-Clientbibliotheken finden Sie unter Tabellen aktualisieren.

In diesen Beispielen geben die Platzhalter SPREADSHEET_ID und SHEET_ID an, wo Sie diese IDs angeben müssen. Die Tabellen-ID finden Sie in der Tabellen-URL. Die Tabellen-ID lässt sich mit der Methode spreadsheets.get abrufen. Die Bereiche werden in der A1-Notation angegeben. Ein Beispielbereich ist Sheet1!A1:D5.

Darüber hinaus gibt der Platzhalter CHART_ID die ID eines bestimmten Diagramms an. Sie können diese ID festlegen, wenn Sie ein Diagramm mit der Sheets API erstellen, oder zulassen, dass die Sheets API ein Diagramm für Sie erstellt. Sie können die IDs vorhandener Diagramme mit der Methode spreadsheets.get abrufen.

Schließlich gibt der Platzhalter SOURCE_SHEET_ID das Tabellenblatt mit den Quelldaten an. In diesen Beispielen ist dies die Tabelle unter Quelldaten des Diagramms.

Diagrammquelldaten

Nehmen wir für diese Beispiele an, dass die verwendete Tabelle im ersten Tabellenblatt („Sheet1“) die folgenden Quelldaten enthält. Die Strings in der ersten Zeile sind Beschriftungen für die einzelnen Spalten. Beispiele für das Lesen aus anderen Tabellenblättern in Ihrer Tabelle finden Sie unter A1-Notation.

A B C D E
1 Modellnummer Sales – Jan Umsätze – Feb Umsatz – März Gesamtumsatz
2 D-01X 68 74 60 202
3 FR-0B1 97 76 88 261
4 P-034 27 49 32 108
5 P-105 46 44 67 157
6 W-11 75 68 87 230
7 W-24 74 52 62 188

Säulendiagramm hinzufügen

Das folgende Codebeispiel spreadsheets.batchUpdate zeigt, wie Sie mit AddChartRequest ein Säulendiagramm aus den Quelldaten erstellen und in einem neuen Tabellenblatt platzieren. Die Anfrage führt zur Konfiguration des Diagramms folgende Schritte aus:

  • Legt den Diagrammtyp als Säulendiagramm fest.
  • Fügen Sie am unteren Rand des Diagramms eine Legende hinzu.
  • Legt die Diagramm- und Achsentitel fest.
  • Konfiguriert drei Datenreihen, die den Umsatz über drei verschiedene Monate darstellen, unter Verwendung von Standardformatierung und -farben.

Das Anfrageprotokoll ist unten dargestellt.

POST https://sheets.googleapis.com/v4/spreadsheets/SPREADSHEET_ID:batchUpdate
{
  "requests": [
    {
      "addChart": {
        "chart": {
          "spec": {
            "title": "Model Q1 Sales",
            "basicChart": {
              "chartType": "COLUMN",
              "legendPosition": "BOTTOM_LEGEND",
              "axis": [
                {
                  "position": "BOTTOM_AXIS",
                  "title": "Model Numbers"
                },
                {
                  "position": "LEFT_AXIS",
                  "title": "Sales"
                }
              ],
              "domains": [
                {
                  "domain": {
                    "sourceRange": {
                      "sources": [
                        {
                          "sheetId": SOURCE_SHEET_ID,
                          "startRowIndex": 0,
                          "endRowIndex": 7,
                          "startColumnIndex": 0,
                          "endColumnIndex": 1
                        }
                      ]
                    }
                  }
                }
              ],
              "series": [
                {
                  "series": {
                    "sourceRange": {
                      "sources": [
                        {
                          "sheetId": SOURCE_SHEET_ID,
                          "startRowIndex": 0,
                          "endRowIndex": 7,
                          "startColumnIndex": 1,
                          "endColumnIndex": 2
                        }
                      ]
                    }
                  },
                  "targetAxis": "LEFT_AXIS"
                },
                {
                  "series": {
                    "sourceRange": {
                      "sources": [
                        {
                          "sheetId": SOURCE_SHEET_ID,
                          "startRowIndex": 0,
                          "endRowIndex": 7,
                          "startColumnIndex": 2,
                          "endColumnIndex": 3
                        }
                      ]
                    }
                  },
                  "targetAxis": "LEFT_AXIS"
                },
                {
                  "series": {
                    "sourceRange": {
                      "sources": [
                        {
                          "sheetId": SOURCE_SHEET_ID,
                          "startRowIndex": 0,
                          "endRowIndex": 7,
                          "startColumnIndex": 3,
                          "endColumnIndex": 4
                        }
                      ]
                    }
                  },
                  "targetAxis": "LEFT_AXIS"
                }
              ],
              "headerCount": 1
            }
          },
          "position": {
            "newSheet": true
          }
        }
      }
    }
  ]
}

Mit der Anfrage wird ein Diagramm in einem neuen Tabellenblatt wie folgt erstellt:

Schemaergebnis für Säulendiagramm hinzufügen

Kreisdiagramm hinzufügen

Das folgende Codebeispiel spreadsheets.batchUpdate zeigt, wie Sie mit AddChartRequest ein 3D-Kreisdiagramm aus den Quelldaten erstellen. Die Anfrage führt zur Konfiguration des Diagramms folgende Schritte aus:

  • Legt den Diagrammtitel fest.
  • Fügt rechts neben dem Diagramm eine Legende hinzu.
  • Legt das Diagramm als 3D-Kreisdiagramm fest. Beachten Sie, dass bei 3D-Kreisdiagrammen im Gegensatz zu flachen Kreisdiagrammen kein Ringloch in der Mitte vorhanden sein darf.
  • Legt die Diagrammdatenreihe als Gesamtumsatz für jede Modellnummer fest.
  • Verankert das Diagramm in Zelle C3 des durch SHEET_ID angegebenen Tabellenblatts mit einem Abstand von 50 Pixeln in X- und Y-Richtung.

Das Anfrageprotokoll ist unten dargestellt.

POST https://sheets.googleapis.com/v4/spreadsheets/SPREADSHEET_ID:batchUpdate
{
  "requests": [
    {
      "addChart": {
        "chart": {
          "spec": {
            "title": "Model Q1 Total Sales",
            "pieChart": {
              "legendPosition": "RIGHT_LEGEND",
              "threeDimensional": true,
              "domain": {
                "sourceRange": {
                  "sources": [
                    {
                      "sheetId": SOURCE_SHEET_ID,
                      "startRowIndex": 0,
                      "endRowIndex": 7,
                      "startColumnIndex": 0,
                      "endColumnIndex": 1
                    }
                  ]
                }
              },
              "series": {
                "sourceRange": {
                  "sources": [
                    {
                      "sheetId": SOURCE_SHEET_ID,
                      "startRowIndex": 0,
                      "endRowIndex": 7,
                      "startColumnIndex": 4,
                      "endColumnIndex": 5
                    }
                  ]
                }
              },
            }
          },
          "position": {
            "overlayPosition": {
              "anchorCell": {
                "sheetId": SHEET_ID,
                "rowIndex": 2,
                "columnIndex": 2
              },
              "offsetXPixels": 50,
              "offsetYPixels": 50
            }
          }
        }
      }
    }
  ]
}

Mit der Anfrage wird ein Diagramm wie dieses erstellt:

Rezeptergebnis für Kreisdiagramm hinzufügen

Alternativ können Sie den Wert für „legenPosition“ in der Anfrage von RIGHT_LEGEND zu LABELED_LEGEND ändern, damit die Legendenwerte mit den Kreisdiagrammsegmenten verbunden werden.

'legendPosition': 'LABELED_LEGEND',

Die aktualisierte Anfrage erstellt ein Diagramm wie dieses:

Rezeptergebnis für Kreisdiagramm hinzufügen

Liniendiagramm mit mehreren nicht benachbarten Bereichen hinzufügen

Das folgende Codebeispiel spreadsheets.batchUpdate zeigt, wie Sie mit AddChartRequest ein Liniendiagramm aus den Quelldaten erstellen und in die Quelltabelle platzieren. Wenn Sie nicht zusammenhängende Bereiche auswählen, können Sie Zeilen aus dem ChartSourceRange ausschließen.

Die Anfrage führt zur Konfiguration des Diagramms folgende Schritte aus:

  • Legt den Diagrammtyp als Liniendiagramm fest.
  • Legt den Titel der horizontalen X-Achse fest.
  • Konfiguriert eine Datenreihe, die die Verkäufe darstellt. A1:A3 und A6:A7 werden als domain und B1:B3 sowie B6:B7 als series festgelegt. Dabei werden Standardformatierungen und -farben verwendet. Bereiche werden mit der A1-Notation in der Anfrage-URL angegeben.
  • Verankert das Diagramm in Zelle H8 des durch SHEET_ID angegebenen Tabellenblatts.

Das Anfrageprotokoll ist unten dargestellt.

POST https://sheets.googleapis.com/v4/spreadsheets/SPREADSHEET_ID:batchUpdate
{
  "requests": [
    {
      "addChart": {
        "chart": {
          "spec": {
            "basicChart": {
              "chartType": "LINE",
              "domains": [
                {
                  "domain": {
                    "sourceRange": {
                      "sources": [
                        {
                          "startRowIndex": 0,
                          "endRowIndex": 3,
                          "startColumnIndex": 0,
                          "endColumnIndex": 1,
                          "sheetId": SOURCE_SHEET_ID
                        },
                        {
                          "startRowIndex": 5,
                          "endRowIndex": 7,
                          "startColumnIndex": 0,
                          "endColumnIndex": 1,
                          "sheetId": SOURCE_SHEET_ID
                        }
                      ]
                    }
                  }
                }
              ],
              "series": [
                {
                  "series": {
                    "sourceRange": {
                      "sources": [
                        {
                          "startRowIndex": 0,
                          "endRowIndex": 3,
                          "startColumnIndex": 1,
                          "endColumnIndex": 2,
                          "sheetId": SOURCE_SHEET_ID
                        },
                        {
                          "startRowIndex": 5,
                          "endRowIndex": 7,
                          "startColumnIndex": 1,
                          "endColumnIndex": 2,
                          "sheetId": SOURCE_SHEET_ID
                        }
                      ]
                    }
                  }
                }
              ]
            }
          },
          "position": {
            "overlayPosition": {
              "anchorCell": {
                "sheetId": SOURCE_SHEET_ID,
                "rowIndex": 8,
                "columnIndex": 8
              }
            }
          }
        }
      }
    }
  ]
}

Mit der Anfrage wird ein Diagramm in einem neuen Tabellenblatt wie folgt erstellt:

Rezeptergebnis für Liniendiagramm mit nicht angrenzenden Bereichen hinzufügen

Diagramm löschen

Das folgende Codebeispiel spreadsheets.batchUpdate zeigt, wie Sie mit DeleteEmbeddedObjectRequest ein durch die CHART_ID angegebenes Diagramm löschen.

Das Anfrageprotokoll ist unten dargestellt.

POST https://sheets.googleapis.com/v4/spreadsheets/SPREADSHEET_ID:batchUpdate
{
  "requests": [
    {
      "deleteEmbeddedObject": {
        "objectId": CHART_ID
      }
    }
  ]
}

Diagrammeigenschaften bearbeiten

Das folgende Codebeispiel spreadsheets.batchUpdate zeigt, wie Sie mit UpdateChartSpecRequest das Diagramm bearbeiten, das mit dem Schema Spaltendiagramm hinzufügen erstellt wurde, indem Sie Daten, Typ und Darstellung ändern. Teilmengen von Diagrammeigenschaften können nicht einzeln geändert werden. Wenn Sie Änderungen vornehmen möchten, müssen Sie für das gesamte Feld spec ein UpdateChartSpecRequest angeben. Wenn Sie eine Diagrammspezifikation bearbeiten, müssen Sie sie durch eine neue ersetzen.

Mit der folgenden Anfrage wird das ursprüngliche Diagramm (angegeben durch CHART_ID) aktualisiert:

  • Legt den Diagrammtyp auf BAR fest.
  • Verschiebt die Legende nach rechts neben das Diagramm.
  • Invertiert die Achsen so, dass sich „Sales“ (Umsatz) auf der unteren Achse und „Model Numbers“ (Modellnummern) auf der linken Achse befindet.
  • Hiermit wird das Format des Achsentitels auf 24-Punkt-Schriftart sowie fett und kursiv festgelegt.
  • Entfernt die W-24-Daten aus dem Diagramm (Zeile 7 in Diagrammquelldaten).

Das Anfrageprotokoll ist unten dargestellt.

POST https://sheets.googleapis.com/v4/spreadsheets/SPREADSHEET_ID:batchUpdate
{
  "requests": [
    {
      "updateChartSpec": {
        "chartId": CHART_ID,
        "spec": {
          "title": "Model Q1 Sales",
          "basicChart": {
            "chartType": "BAR",
            "legendPosition": "RIGHT_LEGEND",
            "axis": [
              {
                "format": {
                  "bold": true,
                  "italic": true,
                  "fontSize": 24
                },
                "position": "BOTTOM_AXIS",
                "title": "Sales"
              },
              {
                "format": {
                  "bold": true,
                  "italic": true,
                  "fontSize": 24
                },
                "position": "LEFT_AXIS",
                "title": "Model Numbers"
              }
            ],
            "domains": [
              {
                "domain": {
                  "sourceRange": {
                    "sources": [
                      {
                        "sheetId": SOURCE_SHEET_ID,
                        "startRowIndex": 0,
                        "endRowIndex": 6,
                        "startColumnIndex": 0,
                        "endColumnIndex": 1
                      }
                    ]
                  }
                }
              }
            ],
            "series": [
              {
                "series": {
                  "sourceRange": {
                    "sources": [
                      {
                        "sheetId": SOURCE_SHEET_ID,
                        "startRowIndex": 0,
                        "endRowIndex": 6,
                        "startColumnIndex": 1,
                        "endColumnIndex": 2
                      }
                    ]
                  }
                },
                "targetAxis": "BOTTOM_AXIS"
              },
              {
                "series": {
                  "sourceRange": {
                    "sources": [
                      {
                        "sheetId": SOURCE_SHEET_ID,
                        "startRowIndex": 0,
                        "endRowIndex": 6,
                        "startColumnIndex": 2,
                        "endColumnIndex": 3
                      }
                    ]
                  }
                },
                "targetAxis": "BOTTOM_AXIS"
              },
              {
                "series": {
                  "sourceRange": {
                    "sources": [
                      {
                        "sheetId": SOURCE_SHEET_ID,
                        "startRowIndex": 0,
                        "endRowIndex": 6,
                        "startColumnIndex": 3,
                        "endColumnIndex": 4
                      }
                    ]
                  }
                },
                "targetAxis": "BOTTOM_AXIS"
              }
            ],
            "headerCount": 1
          }
        }
      }
    }
  ]
}

Nach der Anfrage sieht das Diagramm so aus:

Schemaergebnis für Diagramm bearbeiten

Diagramme verschieben oder ihre Größe anpassen

Das folgende Codebeispiel spreadsheets.batchUpdate zeigt, wie Sie mit UpdateEmbeddedObjectPositionRequest ein Diagramm verschieben und seine Größe anpassen. Nach der Anfrage sieht das durch CHART_ID angegebene Diagramm so aus:

  • In Zelle A5 des ursprünglichen Tabellenblatts verankert.
  • Offset in X-Richtung um 100 Pixel.
  • Geändert auf 1.200 × 742 Pixel. Die Standardgröße für Diagramme ist 600 × 371 Pixel.

Mit der Anfrage werden nur die Eigenschaften geändert, die mit dem Parameter fields angegeben wurden. Andere Properties (z. B. offsetYPixels) behalten ihre ursprünglichen Werte bei.

Das Anfrageprotokoll ist unten dargestellt.

POST https://sheets.googleapis.com/v4/spreadsheets/SPREADSHEET_ID:batchUpdate
{
  "requests": [
    {
      "updateEmbeddedObjectPosition": {
        "objectId": CHART_ID,
        "newPosition": {
          "overlayPosition": {
            "anchorCell": {
              "rowIndex": 4,
              "columnIndex": 0
            },
            "offsetXPixels": 100,
            "widthPixels": 1200,
            "heightPixels": 742
          }
        },
        "fields": "anchorCell(rowIndex,columnIndex),offsetXPixels,widthPixels,heightPixels"
      }
    }
  ]
}

Diagrammdaten lesen

Das folgende Codebeispiel für spreadsheets.get zeigt, wie Diagrammdaten aus einer Tabelle abgerufen werden. Der Abfrageparameter fields gibt an, dass nur die Diagrammdaten zurückgegeben werden sollen.

Die Antwort auf diesen Methodenaufruf ist ein spreadsheet-Objekt, das ein Array von sheet-Objekten enthält. Alle Diagramme auf einem Tabellenblatt werden durch das sheet-Objekt dargestellt. Wenn ein Antwortfeld auf den Standardwert festgelegt ist, wird es in der Antwort weggelassen.

In diesem Beispiel enthält das erste Tabellenblatt (SOURCE_SHEET_ID) keine Diagramme. Daher wird ein leeres Paar geschweifte Klammern zurückgegeben. Das zweite Tabellenblatt enthält ausschließlich das mit Säulendiagramm hinzufügen erstellte Diagramm.

Das Anfrageprotokoll ist unten dargestellt.

GET https://sheets.googleapis.com/v4/spreadsheets/SPREADSHEET_ID?fields=sheets(charts)
{
  "sheets": [
    {},
    {
      "charts": [
        {
          "chartId": CHART_ID,
          "position": {
            "sheetId": SHEET_ID
          },
          "spec": {
            "basicChart": {
              "axis": [
                {
                  "format": {
                    "bold": false,
                    "italic": false
                  },
                  "position": "BOTTOM_AXIS",
                  "title": "Model Numbers"
                },
                {
                  "format": {
                    "bold": false,
                    "italic": false
                  },
                  "position": "LEFT_AXIS",
                  "title": "Sales"
                }
              ],
              "chartType": "COLUMN",
              "domains": [
                {
                  "domain": {
                    "sourceRange": {
                      "sources": [
                        {
                          "endColumnIndex": 1
                          "endRowIndex": 7,
                          "sheetId": SOURCE_SHEET_ID,
                          "startColumnIndex": 0,
                          "startRowIndex": 0,
                        }
                      ]
                    }
                  }
                }
              ],
              "legendPosition": "BOTTOM_LEGEND",
              "series": [
                {
                  "series": {
                    "sourceRange": {
                      "sources": [
                        {
                          "endColumnIndex": 2,
                          "endRowIndex": 7,
                          "sheetId": SOURCE_SHEET_ID,
                          "startColumnIndex": 1,
                          "startRowIndex": 0,
                        }
                      ]
                    }
                  },
                  "targetAxis": "LEFT_AXIS"
                },
                {
                  "series": {
                    "sourceRange": {
                      "sources": [
                        {
                          "endColumnIndex": 3,
                          "endRowIndex": 7,
                          "sheetId": SOURCE_SHEET_ID,
                          "startColumnIndex": 2,
                          "startRowIndex": 0,
                        }
                      ]
                    }
                  },
                  "targetAxis": "LEFT_AXIS"
                },
                {
                  "series": {
                    "sourceRange": {
                      "sources": [
                        {
                          "endColumnIndex": 4,
                          "endRowIndex": 7,
                          "sheetId": SOURCE_SHEET_ID,
                          "startColumnIndex": 3,
                          "startRowIndex": 0,
                        }
                      ]
                    }
                  },
                  "targetAxis": "LEFT_AXIS"
                }
              ]
            },
            "hiddenDimensionStrategy": "SKIP_HIDDEN_ROWS_AND_COLUMNS",
            "title": "Model Q1 Sales",
          },
        }
      ]
    }
  ]
}