Google Spreadsheet API : 清空 sheet 中的所有单元格

Google Spreadsheet API : Empty all cells in sheet

我们使用 Google Sheet API v4。我们想用空数据清除整个 sheet。我们不想删除 rows/columns。

  1. 不工作 UpdateCells 调用(按 API 删除列): developers.google.com
  2. 正在工作的 UpdateCells 调用(所有单元格): developers.google.com

这是电子表格 API 的 Java Quickstart

然后您将使用 spreadsheets.batchUpdateclear 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 中的所有单元格。