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