【问题标题】:Google Sheets API returns "Invalid values[3][1]: struct_value {\n}\n" errorGoogle Sheets API 返回“无效值[3][1]:struct_value {\n}\n”错误
【发布时间】:2020-05-23 16:49:01
【问题描述】:

我正在使用Google Sheets API v4 for Java 用一些值填充电子表格:

String spreadsheetID = ...;
Spreadsheets service = new Sheets.Builder(GoogleNetHttpTransport.newTrustedTransport(),
    JacksonFactory.getDefaultInstance(), credential).setApplicationName("Test").build().spreadsheets();

List<List<Object>> content = new ArrayList<>();
content.add(Arrays.asList("Client", "John Doe"));
content.add(Arrays.asList("Date", new Date()));
service.values().update(spreadsheetID, "Sheet1!C3:D4",
    new ValueRange().setValues(content)).setValueInputOption("RAW").execute();

但我在调用execute() 时收到以下错误:

com.google.api.client.googleapis.json.GoogleJsonResponseException: 400 Bad Request
{
  "code" : 400,
  "errors" : [ {
    "domain" : "global",
    "message" : "Invalid values[3][1]: struct_value {\n}\n",
    "reason" : "badRequest"
  } ],
  "message" : "Invalid values[3][1]: struct_value {\n}\n",
  "status" : "INVALID_ARGUMENT"
}
    at com.google.api.client.googleapis.json.GoogleJsonResponseException.from(GoogleJsonResponseException.java:150)
    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)

我该如何解决这个问题?

【问题讨论】:

    标签: java google-sheets-api


    【解决方案1】:

    setValues method of ValueRangeObject 的嵌套List 作为参数,但这并不意味着您可以将所有类型的对象放在该列表中。根据文档,

    对于输入,支持的值类型有:bool、string 和 double。

    根据个人经验,Integers 和 BigDecimals 也可以,但对于日期,您需要将它们转换为 the number of days since December 30th, 1899 并应用描述的日期格式,例如here,或者(如果您不关心它不会存储为一天)作为字符串通过例如简单日期格式。

    【讨论】:

      猜你喜欢
      • 2019-08-06
      • 1970-01-01
      • 2021-12-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-07
      相关资源
      最近更新 更多