Google Spreadsheet API : 清空 sheet 中的所有单元格
Google Spreadsheet API : Empty all cells in sheet
我们使用 Google Sheet API v4。我们想用空数据清除整个 sheet。我们不想删除 rows/columns。
- 不工作 UpdateCells 调用(按 API 删除列):
developers.google.com
- 正在工作的 UpdateCells 调用(所有单元格):
developers.google.com
这是电子表格 API 的 Java Quickstart。
然后您将使用 spreadsheets.batchUpdate
到 clear the sheets。将 fields
留空并放置一个星号以指示 Sheets API 所有单元格都应 empty/cleared.
以下正文请求如下所示:
{
"requests": [
{
"updateCells": {
"range": {
"sheetId": 0
},
"fields": "*"
}
}
]
}
在 oauth playground 中快速尝试一下。
更新:现在可以使用了。它清除了我的电子表格。
我不知道这是否对其他人有帮助,但这就是我让它为我工作的方式:
这应该清除您的整个 sheet。
我不记得为什么 'sheetId' 是 0,但也许它是 sheet 本身内的 sheet 的索引。 (比如你有标签吗?)
老实说,我不记得了。
该函数希望您传入 $service 对象和 spreadsheetID.
function clearSheet($service, $spreadsheetID = 0){
$request = new \Google_Service_Sheets_UpdateCellsRequest([
'updateCells' => [
'range' => [
'sheetId' => 0
],
'fields' => "*" //clears everything
]
]);
$requests[] = $request;
$requestBody = new Google_Service_Sheets_BatchUpdateSpreadsheetRequest();
$requestBody->setRequests($requests);
$response = $service->spreadsheets->batchUpdate($spreadsheetID, $requestBody);
return $response;
}
Java 示例:
UpdateCellsRequest clearAllDataRequest = new UpdateCellsRequest();
int allSheetsId = 0;
String clearAllFieldsSpell = "*";
GridRange gridRange = new GridRange();
gridRange.setSheetId(allSheetsId);
clearAllDataRequest.setRange(gridRange);
clearAllDataRequest.setFields(clearAllFieldsSpell);
BatchUpdateSpreadsheetRequest request = new BatchUpdateSpreadsheetRequest();
Request clearAllDataRequest = new Request().setUpdateCells(clearAllDataRequest);
request.setRequests(List.of(clearAllDataRequest));
return request;
我能够通过使用 here 查看 rev607 中记录的清晰方法来做到这一点。
ClearValuesRequest clearValuesRequest = new ClearValuesRequest();
// assumes you have a sheetservice initialized
sheetsService.spreadsheets().values().clear(spreadsheetId, "Sheet1", clearValuesRequest);
没有很好记录的关键见解是您可以只传入范围的 sheet 名称并清除 sheet 中的所有单元格。
我们使用 Google Sheet API v4。我们想用空数据清除整个 sheet。我们不想删除 rows/columns。
- 不工作 UpdateCells 调用(按 API 删除列): developers.google.com
- 正在工作的 UpdateCells 调用(所有单元格): developers.google.com
这是电子表格 API 的 Java Quickstart。
然后您将使用 spreadsheets.batchUpdate
到 clear the sheets。将 fields
留空并放置一个星号以指示 Sheets API 所有单元格都应 empty/cleared.
以下正文请求如下所示:
{
"requests": [
{
"updateCells": {
"range": {
"sheetId": 0
},
"fields": "*"
}
}
]
}
在 oauth playground 中快速尝试一下。
更新:现在可以使用了。它清除了我的电子表格。
我不知道这是否对其他人有帮助,但这就是我让它为我工作的方式: 这应该清除您的整个 sheet。 我不记得为什么 'sheetId' 是 0,但也许它是 sheet 本身内的 sheet 的索引。 (比如你有标签吗?) 老实说,我不记得了。 该函数希望您传入 $service 对象和 spreadsheetID.
function clearSheet($service, $spreadsheetID = 0){
$request = new \Google_Service_Sheets_UpdateCellsRequest([
'updateCells' => [
'range' => [
'sheetId' => 0
],
'fields' => "*" //clears everything
]
]);
$requests[] = $request;
$requestBody = new Google_Service_Sheets_BatchUpdateSpreadsheetRequest();
$requestBody->setRequests($requests);
$response = $service->spreadsheets->batchUpdate($spreadsheetID, $requestBody);
return $response;
}
Java 示例:
UpdateCellsRequest clearAllDataRequest = new UpdateCellsRequest();
int allSheetsId = 0;
String clearAllFieldsSpell = "*";
GridRange gridRange = new GridRange();
gridRange.setSheetId(allSheetsId);
clearAllDataRequest.setRange(gridRange);
clearAllDataRequest.setFields(clearAllFieldsSpell);
BatchUpdateSpreadsheetRequest request = new BatchUpdateSpreadsheetRequest();
Request clearAllDataRequest = new Request().setUpdateCells(clearAllDataRequest);
request.setRequests(List.of(clearAllDataRequest));
return request;
我能够通过使用 here 查看 rev607 中记录的清晰方法来做到这一点。
ClearValuesRequest clearValuesRequest = new ClearValuesRequest();
// assumes you have a sheetservice initialized
sheetsService.spreadsheets().values().clear(spreadsheetId, "Sheet1", clearValuesRequest);
没有很好记录的关键见解是您可以只传入范围的 sheet 名称并清除 sheet 中的所有单元格。