Диаграммы

API Google Sheets позволяет создавать и обновлять диаграммы в электронных таблицах по мере необходимости. Примеры на этой странице иллюстрируют, как можно выполнять некоторые распространенные операции с диаграммами с помощью API Sheets.

Эти примеры представлены в виде HTTP-запросов, чтобы обеспечить языковую нейтральность. Чтобы узнать, как реализовать пакетное обновление на разных языках с помощью клиентских библиотек Google API, см. раздел «Обновление электронных таблиц» .

В этих примерах используются заполнители SPREADSHEET_ID и SHEET_ID

Указывает, где следует указывать эти идентификаторы. Идентификатор электронной таблицы можно найти в URL-адресе электронной таблицы. Идентификатор листа можно получить с помощью метода spreadsheets.get . Диапазоны указываются с использованием обозначения A1 . Пример диапазона: Sheet1!A1:D5.

Кроме того, в поле CHART_ID указывается идентификатор данной диаграммы. Вы можете задать этот идентификатор при создании диаграммы с помощью Sheets API или позволить Sheets API сгенерировать его для вас. Вы можете получить идентификаторы существующих диаграмм с помощью метода spreadsheets.get .

Наконец, в поле SOURCE_SHEET_ID указан ваш лист с исходными данными. В этих примерах это таблица, указанная в разделе «Исходные данные диаграммы» .

Исходные данные диаграммы

В этих примерах предположим, что используемая электронная таблица содержит следующие исходные данные на первом листе ("Sheet1"). Строки в первой строке — это метки для отдельных столбцов. Примеры чтения данных с других листов электронной таблицы см. в обозначении A1 .

А Б С Д Е
1 Номер модели Продажи - Январь Продажи - февраль Продажи - март Общий объем продаж
2 Д-01X 68 74 60 202
3 FR-0B1 97 76 88 261
4 П-034 27 49 32 108
5 П-105 46 44 67 157
6 В-11 75 68 87 230
7 В-24 74 52 62 188

Добавить столбчатую диаграмму

Приведенный ниже пример кода spreadsheets.batchUpdate демонстрирует, как использовать AddChartRequest для создания столбчатой ​​диаграммы из исходных данных и размещения ее на новом листе. Запрос выполняет следующие действия для настройки диаграммы:

  • Устанавливает тип диаграммы как столбчатую.
  • Добавляет легенду в нижнюю часть диаграммы.
  • Задает заголовки диаграммы и осей.
  • Настраивает 3 ряда данных, представляющих продажи за 3 разных месяца, с использованием форматирования и цветов по умолчанию.

Протокол запроса представлен ниже.

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

Запрос создает диаграмму на новом листе следующего вида:

Добавить результат рецепта в виде столбчатой ​​диаграммы

Добавить круговую диаграмму

Приведенный ниже пример кода spreadsheets.batchUpdate демонстрирует, как использовать AddChartRequest для создания трехмерной круговой диаграммы на основе исходных данных. Запрос выполняет следующие действия для настройки диаграммы:

  • Задает заголовок диаграммы.
  • Добавляет легенду справа от диаграммы.
  • Задает диаграмму в виде трехмерной круговой диаграммы. Обратите внимание, что трехмерные круговые диаграммы не могут иметь «отверстие в форме пончика» в центре, как это бывает у плоских круговых диаграмм.
  • Устанавливает ряд данных для диаграммы в качестве общего объема продаж для каждого номера модели.
  • Привязывает диаграмму к ячейке C3 листа, указанного параметром SHEET_ID , со смещением в 50 пикселей как по оси X, так и по оси Y.

Протокол запроса представлен ниже.

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

В результате выполнения запроса создается диаграмма следующего вида:

Добавить результат в виде круговой диаграммы к рецепту

В качестве альтернативы вы также можете изменить значение legendPosition с RIGHT_LEGEND на LABELED_LEGEND в запросе, чтобы значения легенды были связаны с секторами круговой диаграммы.

'legendPosition': 'LABELED_LEGEND',

Обновленный запрос создает диаграмму следующего вида:

Добавить результат в виде круговой диаграммы к рецепту

Добавьте линейный график, используя несколько несмежных диапазонов.

Приведенный ниже пример кода spreadsheets.batchUpdate демонстрирует, как использовать AddChartRequest для создания линейного графика из исходных данных и размещения его на исходном листе. Выбор несмежных диапазонов можно использовать для исключения строк из ChartSourceRange .

Запрос выполняет следующие действия для настройки диаграммы:

  • Устанавливает тип диаграммы как линейный график.
  • Задает заголовок горизонтальной оси X.
  • Настраивает ряд данных, представляющий продажи. Он задает диапазоны A1:A3 и A6:A7 в качестве domain , а диапазоны B1:B3 и B6:B7 в качестве series , используя форматирование и цвета по умолчанию. Диапазоны указываются в URL-адресе запроса с помощью обозначения A1 .
  • Привязывает диаграмму к ячейке H8 листа, указанного параметром SHEET_ID .

Протокол запроса представлен ниже.

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

Запрос создает диаграмму на новом листе следующего вида:

Добавить рецепт линейной диаграммы несмежного диапазона результат

Удалить диаграмму

Приведенный ниже пример кода spreadsheets.batchUpdate демонстрирует, как использовать DeleteEmbeddedObjectRequest для удаления диаграммы, указанной по CHART_ID .

Протокол запроса представлен ниже.

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

Редактирование свойств диаграммы

Приведенный ниже пример кода spreadsheets.batchUpdate демонстрирует, как использовать UpdateChartSpecRequest для редактирования диаграммы, созданной в рецепте «Добавить столбчатую диаграмму» , изменяя ее данные, тип и внешний вид. Отдельные подмножества свойств диаграммы изменить нельзя. Для внесения изменений необходимо передать UpdateChartSpecRequest всему полю spec . По сути, редактирование спецификации диаграммы требует замены ее новой.

Следующий запрос обновляет исходный график (указанный по CHART_ID ):

  • Устанавливает тип диаграммы на BAR .
  • Перемещает легенду вправо от графика.
  • Инвертирует оси таким образом, что «Продажи» оказываются на нижней оси, а «Номера моделей» — на левой.
  • Задает формат заголовка оси: шрифт 24 пункта, полужирный и курсивный.
  • Удаляет данные "W-24" из диаграммы (строка 7 в исходных данных диаграммы ).

Протокол запроса представлен ниже.

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

После выполнения запроса диаграмма выглядит следующим образом:

Редактировать результат рецепта диаграммы

Переместить или изменить размер диаграммы

Приведенный ниже пример кода spreadsheets.batchUpdate демонстрирует, как использовать UpdateEmbeddedObjectPositionRequest для перемещения и изменения размера диаграммы. После выполнения запроса диаграмма, указанная в CHART_ID будет следующей:

  • Прикреплено к ячейке A5 исходного листа.
  • Смещение по оси X на 100 пикселей.
  • Размер графика изменен до 1200 на 742 пикселей (стандартный размер графика — 600 на 371 пиксель).

Запрос изменяет только те свойства, которые указаны в параметре fields . Другие свойства (например, offsetYPixels ) сохраняют свои исходные значения.

Протокол запроса представлен ниже.

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

Прочитайте данные диаграммы

Приведенный ниже пример кода spreadsheets.get показывает, как получить данные диаграммы из электронной таблицы. Параметр запроса fields указывает, что должны быть возвращены только данные диаграммы.

В ответ на вызов этого метода выдается объект spreadsheet , содержащий массив объектов sheet . Все диаграммы, присутствующие на листе, представлены в объекте sheet . Если для поля ответа установлено значение по умолчанию, оно исключается из ответа.

В этом примере на первом листе ( SOURCE_SHEET_ID ) нет диаграмм, поэтому возвращается пустая пара фигурных скобок. На втором листе находится диаграмма, созданная с помощью функции «Добавить столбчатую диаграмму» , и больше ничего.

Протокол запроса представлен ниже.

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