Когда я пытаюсь программно добавить диаграмму в таблицу Google, api v4 завершается с ошибкой Google_Service_Exception относительно идентификатора сетки

Я поиграл с таблицами Google Api v4, потому что он выглядит довольно интересно с возможностью также отображать графики. Я использую клиент API Google для PHP.

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

Затем я хотел отобразить диаграмму, основанную на данных на первом листе, на втором листе. Я хотел начать легкий путь с круговой диаграммы, потому что у вас там только один ряд данных.

Я всегда получаю следующее сообщение об ошибке:

«message»: «Недопустимые запросы [0] .addChart: Нет сетки с идентификатором: 1»

Единственный идентификатор, который я установил, — это идентификатор ячейки привязки диаграмм для второго листа, который я уже создал:

$googleSheetsSheetGridCoordinate = new Google_Service_Sheets_GridCoordinate();
$googleSheetsSheetGridCoordinate->setSheetId(1);
$googleSheetsSheetGridCoordinate->setColumnIndex(0);
$googleSheetsSheetGridCoordinate->setRowIndex(0);

$googleSheetsSheetOverlayPosition = new Google_Service_Sheets_OverlayPosition();
$googleSheetsSheetOverlayPosition->setAnchorCell($googleSheetsSheetGridCoordinate);
$googleSheetsSheetOverlayPosition->setHeightPixels(500);
$googleSheetsSheetOverlayPosition->setWidthPixels(700);

Взглянув на электронную таблицу, есть лист с идентификатором 1: он также имеет сетку типов, поэтому я понятия не имею, в чем здесь проблема.

Обновить Вот тело сообщения моего запроса addChart:

{
"requests":[
{
"addChart":{
"chart":{
"spec":{
"title":"Pie Chart",
"pieChart":{
"legendPosition":"BOTTOM_LEGEND",
"domain":{
"sourceRange":{
"sources":[
{
"endRowIndex":3,
"sheetId":0,
"startColumnIndex":0,
"startRowIndex":2
}
]
}
},
"series":{
"sourceRange":{
"sources":{
"endRowIndex":4,
"sheetId":0,
"startColumnIndex":0,
"startRowIndex":3
}
}
}
}
},
"position":{
"overlayPosition":{
"heightPixels":500,
"widthPixels":700,
"anchorCell":{
"columnIndex":0,
"rowIndex":0,
"sheetId":1
}
}
}
}
}
}
]
}

Когда я сравниваю это с примером, единственный, который я мог найти, который охватывает добавление диаграмм, https://codelabs.developers.google.com/codelabs/sheets-api/#9, это выглядит правильно для меня.

4

Решение

Хорошо, я нашел решение.
Я думал, что sheetId — это индекс листа, но это идентификатор, который получает лист после его создания.

Таким образом, решение состоит в том, чтобы получить правильные идентификаторы:

$sourceId = $googleSheetsSpreadsheet->getSheets()[0]->getProperties()->getSheetId();
$targetId = $googleSheetsSpreadsheet->getSheets()[1]->getProperties()->getSheetId();

Эти идентификаторы генерируются при загрузке электронной таблицы, так что на самом деле пока невозможно создать лист с его диаграммами в одном запросе на создание, но сначала нужно создать листы, которые вам нужны, а затем вы можете добавить диаграммы в другом запросе.

3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]