如何通过 Google 工作表 API 更新多个单元格?
How to update multiple cells via the Google Sheets API?
我正在尝试更新并从 google 表中获取一些结果,它正在运行但速度很慢。我需要 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 \Google\Service\Sheets\ValueRange([
'range' => 'B20',
'values' => [["Hello"]]
])
);
array_push(
$data,
new \Google\Service\Sheets\ValueRange([
'range' => 'C20',
'values' => [["World"]]
])
);
array_push(
$data,
new \Google\Service\Sheets\ValueRange([
'range' => 'E20',
'values' => [["Test"]]
])
);
$body = new \Google\Service\Sheets\BatchUpdateValuesRequest([
'valueInputOption' => 'RAW',
'data' => $data
]);
$result = $service->spreadsheets_values->batchUpdate($sheetId, $body);
printf("%d cells updated.", $result->getTotalUpdatedCells());
参考文献:
我正在尝试更新并从 google 表中获取一些结果,它正在运行但速度很慢。我需要 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 \Google\Service\Sheets\ValueRange([
'range' => 'B20',
'values' => [["Hello"]]
])
);
array_push(
$data,
new \Google\Service\Sheets\ValueRange([
'range' => 'C20',
'values' => [["World"]]
])
);
array_push(
$data,
new \Google\Service\Sheets\ValueRange([
'range' => 'E20',
'values' => [["Test"]]
])
);
$body = new \Google\Service\Sheets\BatchUpdateValuesRequest([
'valueInputOption' => 'RAW',
'data' => $data
]);
$result = $service->spreadsheets_values->batchUpdate($sheetId, $body);
printf("%d cells updated.", $result->getTotalUpdatedCells());
参考文献: