Diagramme

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

Diese Beispiele werden in Form von HTTP-Anfragen dargestellt, um sprachunabhängig zu sein. Informationen zum Implementieren einer Batchaktualisierung in verschiedenen Sprachen mit den 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. Sie finden die Tabellen ID in der Tabellen-URL. Sie können die Tabellenblatt-ID mit der Methode spreadsheets.get abrufen. Die Bereiche werden mit der A1 Notation angegeben. Ein Beispielbereich ist Sheet1!A1:D5.

Außerdem 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 die Sheets API kann eine für Sie generieren. Sie können die IDs vorhandener Diagramme mit der spreadsheets.get Methode abrufen.

Schließlich gibt der Platzhalter SOURCE_SHEET_ID das Tabellenblatt mit den Quelldaten an. In diesen Beispielen ist dies die Tabelle, die unter Diagramm-Quelldaten aufgeführt ist.

Diagramm-Quelldaten

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

A B C D E
1 Modellnummer Umsatz – Januar Umsatz – Februar 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 spreadsheets.batchUpdate Codebeispiel zeigt, wie Sie mit AddChartRequest ein Säulendiagramm aus den Quelldaten erstellen und in einem neuen Tabellenblatt platzieren. Mit der Anfrage wird das Diagramm so konfiguriert:

  • Der Diagrammtyp wird auf „Säulendiagramm“ festgelegt.
  • Unten im Diagramm wird eine Legende hinzugefügt.
  • Die Diagramm- und Achsentitel werden festgelegt.
  • Es werden drei Datenreihen konfiguriert, die den Umsatz für drei verschiedene Monate darstellen. Dabei werden die Standardformatierung und -farben verwendet.

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 erstellt:

Rezept für Säulendiagramm hinzufügen

Kreisdiagramm hinzufügen

Das folgende spreadsheets.batchUpdate -Codebeispiel zeigt, wie Sie mit AddChartRequest ein 3D-Kreisdiagramm aus den Quelldaten erstellen. Mit der Anfrage wird das Diagramm so konfiguriert:

  • Der Diagrammtitel wird festgelegt.
  • Rechts neben dem Diagramm wird eine Legende hinzugefügt.
  • Das Diagramm wird als 3D-Kreisdiagramm festgelegt. Hinweis: 3D-Kreisdiagramme können im Gegensatz zu flachen Kreisdiagrammen kein „Donutloch“ in der Mitte haben.
  • Die Datenreihe des Diagramms wird auf den Gesamtumsatz für jede Modellnummer festgelegt.
  • Das Diagramm wird in Zelle C3 des Tabellenblatts verankert, das durch SHEET_ID angegeben wird. Dabei wird ein Versatz von 50 Pixeln in X- und Y-Richtung verwendet.

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:

Kreisdiagramm-Rezept-Suchergebnis hinzufügen

Alternativ können Sie den Wert von „legendPosition“ in der Anfrage auch von RIGHT_LEGEND in LABELED_LEGEND ändern, damit die Legendenwerte mit den Kreisdiagrammsegmenten verbunden werden.

'legendPosition': 'LABELED_LEGEND',

Mit der aktualisierten Anfrage wird ein Diagramm wie dieses erstellt:

Kreisdiagramm-Rezept-Suchergebnis hinzufügen

Liniendiagramm mit mehreren nicht angrenzenden Bereichen hinzufügen

Das folgende spreadsheets.batchUpdate Codebeispiel zeigt, wie Sie mit AddChartRequest ein Liniendiagramm aus den Quelldaten erstellen und im Quelltabellenblatt platzieren. Durch Auswahl nicht angrenzender Bereiche können Sie Zeilen aus dem ChartSourceRange ausschließen.

Mit der Anfrage wird das Diagramm so konfiguriert:

  • Der Diagrammtyp wird auf „Liniendiagramm“ festgelegt.
  • Der Titel der horizontalen X-Achse wird festgelegt.
  • Es wird eine Datenreihe konfiguriert, die den Umsatz darstellt. Dabei werden A1:A3 und A6:A7 als domain, und B1:B3 und B6:B7 als series, festgelegt. Die Standardformatierung und -farben werden verwendet. Bereiche werden in der Anfrage-URL mit der A1 Notation angegeben.
  • Das Diagramm wird in Zelle H8 des Tabellenblatts verankert, das durch SHEET_ID angegeben wird.

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 erstellt:

Rezept für Liniendiagramm mit nicht angrenzenden Bereichen hinzufügen
Ergebnis

Diagramm löschen

Das folgende spreadsheets.batchUpdate -Codebeispiel zeigt, wie Sie mit DeleteEmbeddedObjectRequest ein Diagramm löschen, das durch CHART_ID angegeben wird.

Das Anfrageprotokoll ist unten dargestellt.

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

Diagrammeigenschaften bearbeiten

Das folgende spreadsheets.batchUpdate Codebeispiel zeigt, wie Sie mit dem UpdateChartSpecRequest das im Rezept Säulendiagramm hinzufügen erstellte Diagramm bearbeiten und seine Daten, seinen Typ und sein Aussehen ändern. Teilmengen von Diagrammeigenschaften können nicht einzeln geändert werden. Wenn Sie Änderungen vornehmen möchten, müssen Sie das gesamte Feld spec mit einer UpdateChartSpecRequest angeben. Im Wesentlichen müssen Sie die Diagrammspezifikation durch eine neue ersetzen.

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

  • Der Diagrammtyp wird auf BAR festgelegt.
  • Die Legende wird rechts neben dem Diagramm platziert.
  • Die Achsen werden vertauscht, sodass „Umsatz“ auf der unteren Achse und „Modellnummern“ auf der linken Achse angezeigt wird.
  • Das Format des Achsentitels wird auf 24-Punkt-Schrift, fett und kursiv festgelegt.
  • Die Daten für „W-24“ werden aus dem Diagramm entfernt (Zeile 7 in den Diagramm-Quelldaten).

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:

Ergebnis des Diagrammrezepts bearbeiten

Diagramme verschieben oder in der Größe anpassen

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

  • In Zelle A5 des ursprünglichen Tabellenblatts verankert.
  • Um 100 Pixel in X-Richtung versetzt.
  • Auf 1200 × 742 Pixel vergrößert (die Standardgröße für ein Diagramm ist 600 × 371 Pixel).

Mit der Anfrage werden nur die Eigenschaften geändert, die mit dem Parameter fields angegeben wurden. Andere Eigenschaften (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 spreadsheets.get Codebeispiel zeigt, wie Sie Diagrammdaten aus einer Tabelle abrufen. 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 in einem Tabellenblatt werden im sheet-Objekt dargestellt. Wenn ein Antwortfeld auf den Standardwert festgelegt ist, wird es aus der Antwort entfernt.

In diesem Beispiel enthält das erste Tabellenblatt (SOURCE_SHEET_ID) keine Diagramme. Daher wird ein leeres Paar geschweifter Klammern zurückgegeben. Das zweite Tabellenblatt enthält nur das Diagramm, das mit Säulendiagramm hinzufügen erstellt wurde.

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",
          },
        }
      ]
    }
  ]
}