Wykresy

Interfejs API Arkuszy Google umożliwia tworzenie i aktualizowanie wykresów w arkuszach kalkulacyjnych niezbędną. Przykłady na tej stronie pokazują, jak osiągnąć operacji na wykresach za pomocą interfejsu Arkuszy API.

Przykłady te są przedstawione w formie żądań HTTP, które stanowią język. i nie mam zdania. Aby dowiedzieć się, jak wdrożyć aktualizację zbiorczą w różnych językach za pomocą bibliotek klienta interfejsów API Google, przeczytaj artykuł Aktualizacja arkusze kalkulacyjne.

W tych przykładach zmienne SPREADSHEET_ID i SHEET_ID wskazuje, gdzie należy je podać. Arkusz kalkulacyjny można znaleźć ID w adresie URL arkusza kalkulacyjnego. Możesz uzyskać identyfikator arkusza za pomocą funkcji spreadsheets.get. zakresy określa się w notacji A1. An przykładowy zakres to Arkusz1!A1:D5.

Dodatkowo obiekt zastępczy CHART_ID wskazuje identyfikator danego wykres. Możesz ustawić ten identyfikator podczas tworzenia wykresu za pomocą interfejsu Arkuszy API lub zezwól interfejsowi Arkusze API na ich wygenerowanie. Identyfikatory istniejących wykresów z atrybutem spreadsheets.get.

Natomiast zmienna SOURCE_SHEET_ID wskazuje arkusz z do danych źródłowych. W tych przykładach jest to tabela w sekcji Źródło wykresu danych.

Dane źródłowe wykresu

W tych przykładach załóżmy, że używany arkusz kalkulacyjny ma następujące źródło danych w pierwszym arkuszu („Arkusz1”). Ciągi w pierwszym wierszu to etykiety dla: poszczególnych kolumn. Aby zobaczyć przykłady odczytywania innych arkuszy w przeczytaj opis A1.

A B C D E
1 Numer modelu Dział sprzedaży – styczeń Sprzedaż – luty Dział sprzedaży – marzec Łączna sprzedaż
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

Dodaj wykres kolumnowy

Poniżej spreadsheets.batchUpdate przykładowy kod pokazuje, jak korzystać z AddChartRequest aby utworzyć wykres kolumnowy z danych źródłowych i umieścić go w nowym arkuszu. wykona te czynności, aby skonfigurować wykres:

  • Ustawia typ wykresu jako wykres kolumnowy.
  • Dodaje legendę na dole wykresu.
  • Określa tytuły wykresu i osi.
  • Konfiguruje 3 serie danych reprezentujące sprzedaż w 3 różnych miesiącach, a przy użyciu domyślnego formatowania i kolorów.

Protokół żądania jest widoczny poniżej.

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

To żądanie tworzy w nowym arkuszu wykres podobny do tego:

Dodaj wynik przepisu na wykres kolumnowy

Dodawanie wykresu kołowego

Poniżej spreadsheets.batchUpdate przykładowy kod pokazuje, jak korzystać z AddChartRequest aby utworzyć wykres kołowy 3D na podstawie danych źródłowych. Żądanie wykonuje te działania, aby: skonfiguruj wykres:

  • Określa tytuł wykresu.
  • Dodaje legendę po prawej stronie wykresu.
  • Ustawia wykres jako wykres kołowy 3D. Pamiętaj, że wykresy kołowe 3D nie mogą zawierać elementów „dziura w pierścieniu” na środku wykresu kołowego.
  • Ustawia serię danych na wykresie jako łączną sprzedaż dla każdego numeru modelu.
  • Zakotwicza wykres w komórce C3 arkusza określonego przez SHEET_ID. z przesunięciem 50 pikseli w kierunkach X i Y.

Protokół żądania jest widoczny poniżej.

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

Żądanie tworzy wykres podobny do tego:

Dodaj wynik przepisu na wykres kołowy

Możesz też zaktualizować wartość legendPosition za pomocą RIGHT_LEGEND do LABELED_LEGEND w żądaniu, tak aby wartości legendy były połączone z wycinkami wykresu kołowego.

'legendPosition': 'LABELED_LEGEND',

Zaktualizowane żądanie utworzy wykres podobny do tego:

Dodaj wynik przepisu na wykres kołowy

Dodaj wykres liniowy, używając wielu zakresów, które nie sąsiadują ze sobą

Poniżej spreadsheets.batchUpdate przykładowy kod pokazuje, jak używać parametru AddChartRequest aby utworzyć wykres liniowy na podstawie danych źródłowych i umieścić go w arkuszu źródłowym. Zaznaczenie zakresów, które nie przylegają do siebie, może zostać użyte do wykluczenia wierszy z ChartSourceRange

Żądanie wykonuje te działania, aby skonfigurować wykres:

  • Ustawia typ wykresu jako wykres liniowy.
  • Określa tytuł poziomej osi X.
  • Konfiguruje serię danych reprezentującą sprzedaż. Ustawia komórki A1:A3 i A6:A7 jako domain, B1:B3 i B6:B7 jako series, z domyślnym formatowaniem i kolorami. Zakresy określa się za pomocą funkcji A1 w adresie URL żądania.
  • Zakotwicza wykres w komórce H8 arkusza określonego przez funkcję SHEET_ID.

Protokół żądania jest widoczny poniżej.

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

To żądanie tworzy w nowym arkuszu wykres podobny do tego:

Dodaj przepis na wykres liniowy, który nie sąsiadują ze sobą
wynik

Usuwanie wykresu

Poniżej spreadsheets.batchUpdate przykładowy kod pokazuje, jak używać parametru DeleteEmbeddedObjectRequest aby usunąć wykres określony przez CHART_ID.

Protokół żądania jest widoczny poniżej.

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

Edytowanie właściwości wykresu

Poniżej spreadsheets.batchUpdate przykładowy kod pokazuje, jak używać parametru UpdateChartSpecRequest aby edytować wykres utworzony w przepisie Dodaj wykres kolumnowy, modyfikacji danych, typu i wyglądu. Podzbiorów właściwości wykresu nie może być zmienianych indywidualnie. Aby wprowadzić zmiany, musisz wypełnić całe pole spec dzięki UpdateChartSpecRequest. Zasadniczo edytowanie specyfikacji wykresu wymaga wymiany.

To żądanie aktualizuje pierwotny wykres (określony przez CHART_ID):

  • Ustawia typ wykresu na BAR.
  • Przenosi legendę na prawo od wykresu.
  • Odwraca osie tak, że wartość „Sprzedaż” znajduje się na dolnej osi, a „Numery modeli” jest na lewej osi.
  • Określa format tytułu osi: 24-punktowa, pogrubienie i kursywa.
  • Usunięcie modelu „W-24” dane z wykresu (wiersz 7 w źródle wykresu dane).

Protokół żądania jest widoczny poniżej.

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

Po przesłaniu prośby wykres będzie wyglądał tak:

Edytuj wynik przepisu wykresu

Przenoszenie wykresu lub zmiana jego rozmiaru

Poniżej spreadsheets.batchUpdate przykładowy kod pokazuje, jak używać parametru UpdateEmbeddedObjectPositionRequest aby przenieść wykres lub zmienić jego rozmiar. Po przesłaniu żądania wykres określony przez funkcję CHART_ID to:

  • Zakotwiczony do komórki A5 oryginalnego arkusza.
  • Przesunięcie w kierunku X o 100 pikseli.
  • Zmieniono rozmiar do 1200 na 742 pikseli (domyślny rozmiar wykresu to 600 x 371 pikseli).

W żądaniu zmienia się tylko właściwości określone za pomocą parametru fields. Inne właściwości (np. offsetYPixels) zachowują oryginalne wartości.

Protokół żądania jest widoczny poniżej.

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

Odczytywanie danych z wykresu

Poniżej spreadsheets.get – przykładowy kod pokazuje, jak pobrać dane wykresu z arkusza kalkulacyjnego. Parametr zapytania fields określa, że powinny zostać zwrócone tylko dane wykresu.

Odpowiedź na wywołanie tej metody jest spreadsheet który zawiera tablicę sheet obiektów. Dowolne wykresy znajdujące się w arkuszu są reprezentowane w sheet. Jeśli jest ustawione na wartość domyślną, jest ono pomijane w odpowiedzi.

W tym przykładzie pierwszy arkusz (SOURCE_SHEET_ID) nie zawiera żadnych wykresów, więc zwracana jest pusta para nawiasów klamrowych. Drugi arkusz zawiera wykres utworzony za pomocą opcji Dodaj wykres kolumnowy itp.

Protokół żądania jest widoczny poniżej.

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