使用 Java 通过 API 写入 Google 表格

Write to GoogleSheet via API with Java

我正在尝试使用 Google Sheet API 和 Java 将值写入单元格。 为了阅读,我使用了 Java Quickstart 的指南,对我来说效果很好。

为了写入 Google Sheet 我使用:

service.spreadsheets().values().update(spreadsheetId, "Sheet1!A4:H", response).execute();

此函数在 运行:

时输出以下错误
com.google.api.client.googleapis.json.GoogleJsonResponseException: 403 Forbidden
{
  "code" : 403,
  "errors" : [ {
    "domain" : "global",
    "message" : "Request had insufficient authentication scopes.",
    "reason" : "forbidden"
  } ],
  "message" : "Request had insufficient authentication scopes.",
  "status" : "PERMISSION_DENIED"
}

我使用的身份验证范围

private static final List<String> SCOPES = Arrays.asList(SheetsScopes.SPREADSHEETS);

Java API 必须以交互方式使用,如果你 运行 在无法弹出网络浏览器的服务器上使用它(它将让您批准 OAuth 对话框),则身份验证流程无法获得正确的凭据,因此无法正常工作。

在 运行 期间,您是否看到浏览器弹出以批准 OAuth 对话框?如果不是,您可能 运行 处于无头会话中,并且需要一些其他方法来获取用户的凭据。

显然有几个问题:

  1. 删除存储在 /Users/XXX/.credentials 的凭据。
  2. 将范围更改为 SheetsScopes.SPREADSHEETS。
  3. Google Sheet Sheet 本身的共享和编辑选项。

现在可以了! 谢谢大家的帮助

我遇到了同样的问题。我解决了范围内的问题。 我刚刚更改

SheetsScopes.SPREADSHEETS.READONLY

 SheetsScopes.SPREADSHEETS

而且效果很好。

尝试用 A4:H

替换 "Sheet1!A4:H"