使用 Google Sheets API v4 追加 100 万行并指定单元格位置

Append 1 millions rows and specify cell position using Google Sheets API v4

我们正在使用 Google Sheets API V4。从 v4 开始,我们希望添加 100 万行,我们支持在 Spread sheet 中写入 200 万个单元格。因此,我们尝试添加 80,000 行和 6 列。 80,000 * 6 = 480000 个单元格,但出现以下错误。

{
  "code": 400,
  "errors": [
    {
      "domain": "global",
      "message": "Invalid requests[0].appendCells: This action would increase the number of cells in the workbook above the limit of 2000000 cells.",
      "reason": "badRequest"
    }
  ],
  "message": "Invalid requests[0].appendCells: This action would increase the number of cells in the workbook above the limit of 2000000 cells.",
  "status": "INVALID_ARGUMENT"
}

我们在 80 次循环中每次添加 1000 行。错误后我们检查 sheets,我们发现插入了 73000 行。

我们认为 Google Sheets API 也会计算第 6 列之后的空单元格。假设我们用铰孔单元格 73000 * 26 (A-Z) = 1898000 进行计算,当我们尝试添加更多单元格时出现错误。

请帮助我们提供有关如何移除铰孔空单元格或任何其他替代方法的任何建议。我们正在使用以下代码

AppendCellsRequest appendCellReq = new AppendCellsRequest();
appendCellReq.setSheetId(ssDetails.getSheets().get(4).getProperties().getSheetId());
appendCellReq.setRows(listRowData);
appendCellReq.setFields("userEnteredValue");

Request request = new Request();
request.setAppendCells(appendCellReq);

List<Request> requests = new ArrayList<>();
requests.add(request);

BatchUpdateSpreadsheetRequest batchRequests = new BatchUpdateSpreadsheetRequest();

batchRequests.setRequests(requests);

service.spreadsheets().batchUpdate(spreadsheetId, batchRequests).execute();

第二件事,在附加单元格时,我们无法确定单元格的列位置,它总是从第一列 (A) 开始。

是的,200 万个单元格的限制适用于所有单元格,无论是否为空白。由于默认情况下 sheet 有 26 列,这意味着最多可以有 2,000,000/26 = 76923 行,除非减少列数。

要删除不需要的列(第 6 列之后的列),请向

发送 POST 请求
https://sheets.googleapis.com/v4/spreadsheets/{spreadsheetId}:batchUpdate

请求正文的形式为

{
  "requests": [
    {
      "deleteDimension": {
        "range": {
          "sheetId": sheetId,
          "dimension": "COLUMNS",
          "startIndex": 7,
          "endIndex": 26
        }
      }
    }
  ]
}

参考:delete rows or columns.