Как установить метод проверки в API электронных таблиц Google

Я в замешательстве по поводу нового Google Sheets API v4. Мой вопрос: как я могу установить правила проверки для указанных столбцов в таблице?
Там нет полезного учебника с описанием, как использовать соответствующие методы.

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

Эта проверка должна быть установлена ​​до загрузки данных (что работает нормально).

Мой текущий код:

$client = getClient();
$service = new Google_Service_Sheets($client);
$fileId = 'my-document-id';

$body = new Google_Service_Sheets_SetDataValidationRequest(array(
'setRange' => new Google_Service_Sheets_GridRange(
array(
'sheetId'=>'List1',
'startColumnIndex'=>'0',
'endColumnIndex'=>'1'
)
),
'setRule' => new Google_Service_Sheets_DataValidationRule(
array(

'setValues'=>array('YES','NO')
)
)
));$sheetReq = new Google_Service_Sheets_Request($client);
$sheetReq->setSetDataValidation($body);$batchUpdateRequest = new Google_Service_Sheets_BatchUpdateSpreadsheetRequest(array(
'requests' => $sheetReq
));$result = $service->spreadsheets->batchUpdate($fileId, $batchUpdateRequest);

1

Решение

Спасибо @ random-parts за помощь, она привела меня на правильный путь. Если кто-то еще попытается решить аналогичную проблему в PHP в функции, пожалуйста, найдите ниже полностью рабочий пример:

    $client = $this->getClient();
$service = new Google_Service_Sheets($client);
$ary_values = ['yes','nope','maybe','never ever'];

foreach( $ary_values AS $d ) {
$cellData = new Google_Service_Sheets_ConditionValue();
$cellData->setUserEnteredValue($d);
$values[] = $cellData;
}

$conditions = new Google_Service_Sheets_BooleanCondition();
$conditions->setType('ONE_OF_LIST');
$conditions->setValues($values);

$setRule= new Google_Service_Sheets_DataValidationRule();
$setRule->setCondition($conditions);
$setRule->setInputMessage('Please set correct value');
$setRule->setShowCustomUi(true);

$range = new Google_Service_Sheets_GridRange();
$range->setStartRowIndex(1);
$range->setEndRowIndex(5);
$range->setStartColumnIndex(1);
$range->setEndColumnIndex(2);
$range->setSheetId(YOUR_SHEET_ID); //replace this by your sheet ID

$valReq = new Google_Service_Sheets_SetDataValidationRequest();
$valReq->setRule($setRule);
$valReq->setRange($range);

$sheetReq = new Google_Service_Sheets_Request();
$sheetReq->setSetDataValidation($valReq);

$bodyReq = new Google_Service_Sheets_BatchUpdateSpreadsheetRequest();
$bodyReq->setRequests($sheetReq);

$result = $service->spreadsheets->batchUpdate($fileId, $bodyReq);
3

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

DataValidationRule объект будет выглядеть следующим образом:

"rule": {
"condition": {
"type": "ONE_OF_LIST",
"values": [
{ userEnteredValue: "Yes"},
{ userEnteredValue: "No"}
],
},
"inputMessage": "",
"strict": true,
"showCustomUi": true,
}

Вы хотите использовать rule.condition.type ONE_OF_LIST а затем введите rule.condition.values Вы хотите в списке. showCustomUi покажет выпадающий

Полный пример использования скрипта Google Apps из редактора скриптов Sheets:

function setDataVal () {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheets()[0];

var validation = {
"setDataValidation": {
"range": {
"sheetId": sheet.getSheetId(),
"startRowIndex": 1,
"endRowIndex": 5,
"startColumnIndex": 1,
"endColumnIndex": 5,
},
"rule": {
"condition": {
"type": "ONE_OF_LIST",
"values": [
{ userEnteredValue: "Yes"},
{ userEnteredValue: "No"}
],
},
"inputMessage": "",
"strict": true,
"showCustomUi": true,
}
},
}

var req = {
"requests": [validation],
"includeSpreadsheetInResponse": false,
}

Sheets.Spreadsheets.batchUpdate(req, ss.getId())
}
  • Расширенный сервис Sheets API должен быть включен
1

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector