我正在尝试更新并从谷歌表格中获取一些结果,它正在工作但速度很慢。我需要batchUpdate
并获取数据。
这是我的脚本
foreach ($import_cels as $celu => $valoare) {
$range_ins = $celu;
$valueRange->setValues(["values" => [$valoare]]);
$service->spreadsheets_values->update($spreadsheetId, $range_ins, $valueRange, $conf);
}
foreach ($cells_to_get as $celu => $valoare) {
$response = $service->spreadsheets_values->get($spreadsheetId, $celu);
$values = $response->getValues()[0][0];
echo "each cell :" . $values;
}
问题:我的请求太多了,因为我逐个更新单元格并提取相同的单元格。
我需要批量更新单元格并使它们像
B12 => 3
BB1 => 1
CC3 => 4
请按以下格式创建您的请求
var resources = {
auth: "auth key",
spreadsheetId: "spread sheet id",
resource:{
valueInputOption: "RAW",
data:[
{
range: "Sheet1!A5", // Update single cell
values: [["A5"]]
}, {
range: "Sheet1!B4:B6", // Update a column
values: [["B4"], ["B5"], ["B6"]]
}, {
range: "Sheet1!C4:E4", // Update a row
values: [["C4", "D4", "E4"]]
}, {
range: "Sheet1!F5:H6", // Update a 2d range
values: [["F5", "F5"], ["H6", "H6"]]
}
]
}
};
并使用sheets.spreadsheets.values.batchUpdate(resources)
功能进行批量更新。
这是一个老问题,但为了完整性(并且因为文档不是很清楚(,这就是使用 PHP 类(而不是批准的答案中使用的 API 请求(的方式
$data = [];
array_push(
$data,
new GoogleServiceSheetsValueRange([
'range' => 'B20',
'values' => [["Hello"]]
])
);
array_push(
$data,
new GoogleServiceSheetsValueRange([
'range' => 'C20',
'values' => [["World"]]
])
);
array_push(
$data,
new GoogleServiceSheetsValueRange([
'range' => 'E20',
'values' => [["Test"]]
])
);
$body = new GoogleServiceSheetsBatchUpdateValuesRequest([
'valueInputOption' => 'RAW',
'data' => $data
]);
$result = $service->spreadsheets_values->batchUpdate($sheetId, $body);
printf("%d cells updated.", $result->getTotalUpdatedCells());
引用:
- 批量更新
- 批处理更新值请求