【问题标题】:Google spreadsheet API, 400 error bad request : unable to parse rangeGoogle 电子表格 API,400 错误错误请求:无法解析范围
【发布时间】:2016-10-19 23:55:34
【问题描述】:

我正在尝试使用电子表格示例访问 Google 电子表格。当我运行示例代码时,它运行良好。我只是更改 SpreadsheetId 和范围。它开始给我:

Exception in thread "main" com.google.api.client.googleapis.json.GoogleJsonResponseException: 400 Bad Request
{
  "code" : 400,
  "errors" : [ {
    "domain" : "global",
    "message" : "Unable to parse range: Class Data!A2:A4",
    "reason" : "badRequest"
  } ],
  "message" : "Unable to parse range: Class Data!A2:A4",
  "status" : "INVALID_ARGUMENT"
}
    at com.google.api.client.googleapis.json.GoogleJsonResponseException.from(GoogleJsonResponseException.java:146)
    at com.google.api.client.googleapis.services.json.AbstractGoogleJsonClientRequest.newExceptionOnError(AbstractGoogleJsonClientRequest.java:113)
    at com.google.api.client.googleapis.services.json.AbstractGoogleJsonClientRequest.newExceptionOnError(AbstractGoogleJsonClientRequest.java:40)
    at com.google.api.client.googleapis.services.AbstractGoogleClientRequest$1.interceptResponse(AbstractGoogleClientRequest.java:321)
    at com.google.api.client.http.HttpRequest.execute(HttpRequest.java:1065)
    at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.executeUnparsed(AbstractGoogleClientRequest.java:419)
    at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.executeUnparsed(AbstractGoogleClientRequest.java:352)
    at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.execute(AbstractGoogleClientRequest.java:469)
    at poc.mainPOC.main(mainPOC.java:157)

下面是代码:

  String spreadsheetId = "my spread sheet ID";
    String range = "Class Data!A2:A4";
    ValueRange response = service.spreadsheets().values()
        .get(spreadsheetId, range)
        .execute();

【问题讨论】:

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


    【解决方案1】:

    尝试将Class Data!A2:A4 替换为A2:A4

    【讨论】:

    • 我想访问一个特定的电子表格,我该怎么做? ValueRange 响应 = service.spreadsheets().values() .get(spreadsheetId, range) .execute();目前我正在使用它来获取数据
    • 在示例中,“类数据”似乎是工作表的名称。如果没有具有该名称的工作表,则会引发错误。 @HemantYadav 当您说电子表格时,您是指工作表吗?如果它是电子表格,那么您提供电子表格 ID。如果它是工作表,则在“NameOfWorksheet!A2:A4”之类的范围内提供它,其中 NameOfWorksheet 是工作表的名称,包括空格。通过省略 NameOfWorksheet 和感叹号,它转到第一个工作表。
    • 你能回答我的问题吗--> stackoverflow.com/questions/39096279/… @ritesh.garg
    • 非常感谢兄弟。 @zeta 的解释是把很多未知的事情放在眼里。
    【解决方案2】:

    如果您查看工作表itself,您会注意到工作表的标题为“类数据”。因此,只需将工作表的名称放在“类数据”的位置即可。例子: 字符串范围 = "SheetName!A1:C";

    【讨论】:

      【解决方案3】:

      String range = "Class Data!A2:A4";

      Class Data 是您的工作表的名称,仅供参考:底部选项卡上的名称,默认为“Sheet1”。将Class Data 替换为您要使用的那个。

      【讨论】:

        【解决方案4】:

        我试图将一些数据添加到名为 Emmett 的工作表中,但该工作表尚不存在并收到此错误:

        Error: Unable to parse range: Emmet!A2:C12

        我不得不在电子表格中手动创建名为 Emmett 的工作表,然后它就像一个魅力。

        【讨论】:

          【解决方案5】:

          当我在选项卡名称中有错字时遇到了这个错误。在您的情况下,“类数据”与选项卡的名称不匹配

          【讨论】:

            【解决方案6】:

            在我的情况下,当我在最后修剪工作表名称时,谷歌工作表中有一个额外的空间。删除修剪逻辑后,一切正常。

            【讨论】:

              【解决方案7】:

              我学到的是,如果列名还不存在,这个命令将无法找到它。您需要确保您要写入的列已经存在——我是从谷歌表中手动完成的。

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2019-09-12
                • 2020-11-08
                相关资源
                最近更新 更多