附加1百万行并使用Google表格API v4指定单元格位置

时间:2016-06-15 11:24:56

标签: java google-sheets google-spreadsheet-api google-sheets-api

我们正在使用Google表格API V4。我们希望从v4添加100万行,我们支持在Spread表中写入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行。错误后我们检查表格,发现插入了73000行。

我们认为Google表格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)开始。

1 个答案:

答案 0 :(得分:1)

是的,200万个细胞的限制适用于所有细胞,空白或不空白。由于默认情况下工作表有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