Как настроить проверку данных в диапазоне ячеек с помощью API Google Sheets в PHP?

У меня есть следующий код:

$requests = '{
"requests": [
{
"setDataValidation": {
"range": {
"sheetId": mySheetID,
"startRowIndex": 0,
"endRowIndex": 10,
"startColumnIndex": 0,
"endColumnIndex": 6
},
"rule": {
"condition": {
"type": "NUMBER_GREATER",
"values": [
{
"userEnteredValue": "5"}
]
},
"inputMessage": "Value must be > 5",
"strict": true
}
}
}
]
}';

// $client is a confirmed, working authorized Google_Client object.
$serviceSheets      = new \Google_Service_Sheets($client);
// NOTE This is not the same object as in \App\GoogleSheets
$batchUpdateRequest = new \Google_Service_Sheets_BatchUpdateSpreadsheetRequest;

$batchUpdateRequest->setRequests($requests);

$serviceSheets->spreadsheets->batchUpdate(
// $id is correct.
$id,
$batchUpdateRequest
);

… И я получаю следующую ошибку:

{
"error": {
"code": 400,
"message": "Invalid value at 'requests' (type.googleapis.com/google.apps.sheets.v4.BatchUpdateSpreadsheetRequest.Request), \"{\n \"requests\": [\n {\n \"setDataValidation\": {\n \"range\": {\n \"sheetId\": \"1100288254\",\n \"startRowIndex\": 0,\n \"endRowIndex\": 10,\n \"startColumnIndex\": 0,\n \"endColumnIndex\": 6\n },\n \"rule\": {\n \"condition\": {\n \"type\": \"NUMBER_GREATER\",\n \"values\": [\n {\n \"userEnteredValue\": \"5\"\n }\n ]\n },\n \"inputMessage\": \"Value must be > 5\",\n \"strict\": true\n }\n }\n }\n ]\n}\"",
"errors": [
{
"message": "Invalid value at 'requests' (type.googleapis.com/google.apps.sheets.v4.BatchUpdateSpreadsheetRequest.Request), \"{\n \"requests\": [\n {\n \"setDataValidation\": {\n \"range\": {\n \"sheetId\": \"1100288254\",\n \"startRowIndex\": 0,\n \"endRowIndex\": 10,\n \"startColumnIndex\": 0,\n \"endColumnIndex\": 6\n },\n \"rule\": {\n \"condition\": {\n \"type\": \"NUMBER_GREATER\",\n \"values\": [\n {\n \"userEnteredValue\": \"5\"\n }\n ]\n },\n \"inputMessage\": \"Value must be > 5\",\n \"strict\": true\n }\n }\n }\n ]\n}\"",
"domain": "global",
"reason": "badRequest"}
],
"status": "INVALID_ARGUMENT"}
}

Я пытался пройти $requests как массив, но он говорит, что ему нужен JSON, так что это не проблема.

Я также пытался передать значение requests ключ (массив объектов) и единый setDataValidationзапрос (объект).

Сам запрос скопирован с гугл документы.

0

Решение

Это неверный JSON:

     "sheetId": mySheetIdConfirmedCorrect,
^---- unquoted string

Не создавайте свой собственный JSON. Создайте простую старую регулярную структуру массива PHP, затем json_encode() Это.

JSON также не может содержать «код», так что если это mySheet... на самом деле переменная, это снова недопустимый JSON. Вы не можете передавать ничего, кроме данных — выражения, код и т. Д. … все они недопустимы в JSON.

0

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

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

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