调用Sheet API时,获取“此操作会增加工作表中单元格的数量超过2000000单元格的限制”

时间:2017-09-13 07:46:41

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

我正在使用Google表格V4 append API将数据插入新创建的工作表中。我正在插入1000行和1001列的数据,即1001000个单元格。

String url = https://sheets.googleapis.com/v4/spreadsheets/<spreadSheetId>/values/<workSheetName>!A1:append?access_token=<accessToken>&valueInputOption=USER_ENTERED&insertDataOption=INSERT_ROWS
    //CREATING THE REQUEST BODY
reqBody.put("range", <workSheetName>+"!A1");
reqBody.put("majorDimension", "ROWS");
reqBody.put("values", <values>);

我收到400 Bad Request消息:“此操作会将工作表中的单元格数量增加到超过2000000个单元格的限制。”

我知道谷歌每张纸限制有200万个单元格,但我无法找出为什么我得到这个例外,特别是因为我没有超出限制。

有关为何可能出现此错误的任何帮助?

1 个答案:

答案 0 :(得分:0)

Google似乎会计算已经存在的单元格,即使它们为空,甚至是全新的电子表格中的 。解决方案是先擦拭那些色谱柱。您可以通过选择一列,右键单击并选择“删除”来手动完成此操作。

使用API​​,您需要deleteDimension-这是一个PHP示例:

        new Google_Service_Sheets_Request([
          "deleteDimension" => [
            "range" => [
              "sheetId" => $sheetId,
              "dimension" => "COLUMNS",
              "startIndex" => 1,
              "endIndex" => 26
              ],
          ],
        ]);

注意:

  • Google具有表示范围的特殊语法-第一列确实始于0,但结束列必须为所需的 之后,因此0-1是A列,不是A和B列。

  • 在此示例中,我们删除除第一列以外的所有内容-它不允许您删除整个工作表,例如如果您要执行0-26(即所有操作),则会得到:

  

无效请求[1]。deleteDimension:您无法删除工作表上的所有列。

  • 别担心,尽管您现在只有一列,但是在添加数据时会自动添加所需数量的新列

  • 我在2019年12月获得的工作簿限制为5,000,000,而不是2,000,000:

  

无效的请求[2] .pasteData:此操作将使工作簿中的单元格数量超过5000000个单元格的限制。