我的第一篇帖子,与下面的帖子有关如何使用googlesheetsapi在php中设置基本过滤器?
我已经实现了下面的代码,但收到了这个消息,我不确定是什么原因:
接收到无效的JSON负载。未知名称"请求";在"requests[0]"处:找不到字段。
$criteria = new stdClass();
$criteria->{'2'} = array(
'condition' => array(
'type' => 'NUMBER_EQ',
'values' => array(
'userEnteredValue' => '5'
)
)
);
$requests = [
new Google_Service_Sheets_Request( array(
'requests' => array(
'setBasicFilter' => array(
'filter' => array(
'range' => [
'sheetId' => 0,
'startRowIndex' => 4,
'endRowIndex' => 20,
'startColumnIndex' => 0,
'endColumnIndex' => 11
],
'criteria' => $criteria
),
),
'includeSpreadsheetInResponse' => true,
'responseIncludeGridData' => true
)
)
)
];
$requestBody = new Google_Service_Sheets_BatchUpdateSpreadsheetRequest(array('requests' => $requests));
$response = $sheets->spreadsheets->batchUpdate($spreadsheetId, $requestBody);
修改点:
- 请将
'userEnteredValue' => '5'
包含到数组中 new Google_Service_Sheets_Request()
中不需要'requests' => array(,,,)
。因为使用了array('requests' => $requests)
- 请将
'includeSpreadsheetInResponse' => true,
和'responseIncludeGridData' => true
放在$requests
之外
当以上几点反映到您的脚本中时,它变成如下。
修改的脚本:
$criteria = new stdClass();
$criteria->{'2'} = array(
'condition' => array(
'type' => 'NUMBER_EQ',
'values' => [array('userEnteredValue' => '5')]
)
);
$requests = [
new Google_Service_Sheets_Request( array(
'setBasicFilter' => array(
'filter' => array(
'range' => [
'sheetId' => 0,
'startRowIndex' => 4,
'endRowIndex' => 20,
'startColumnIndex' => 0,
'endColumnIndex' => 11
],
'criteria' => $criteria
)
)
)
)
];
$requestBody = new Google_Service_Sheets_BatchUpdateSpreadsheetRequest(array(
'requests' => $requests,
'includeSpreadsheetInResponse' => true,
'responseIncludeGridData' => true
));
$response = $sheets->spreadsheets->batchUpdate($spreadsheetId, $requestBody);
- 在这种情况下,可以使用
$criteria->{'2'}
,也可以使用$criteria->{'1'}
而不是$criteria->{'2'}
参考文献:
- 方法:spreadsheets.batchUpdate
- SetBasicFilterRequest