Я поиграл с таблицами 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, это выглядит правильно для меня.
Хорошо, я нашел решение.
Я думал, что sheetId — это индекс листа, но это идентификатор, который получает лист после его создания.
Таким образом, решение состоит в том, чтобы получить правильные идентификаторы:
$sourceId = $googleSheetsSpreadsheet->getSheets()[0]->getProperties()->getSheetId();
$targetId = $googleSheetsSpreadsheet->getSheets()[1]->getProperties()->getSheetId();
Эти идентификаторы генерируются при загрузке электронной таблицы, так что на самом деле пока невозможно создать лист с его диаграммами в одном запросе на создание, но сначала нужно создать листы, которые вам нужны, а затем вы можете добавить диаграммы в другом запросе.
Других решений пока нет …