使用 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 对话框?如果不是,您可能 运行 处于无头会话中,并且需要一些其他方法来获取用户的凭据。
显然有几个问题:
- 删除存储在 /Users/XXX/.credentials 的凭据。
- 将范围更改为 SheetsScopes.SPREADSHEETS。
- Google Sheet Sheet 本身的共享和编辑选项。
现在可以了!
谢谢大家的帮助
我遇到了同样的问题。我解决了范围内的问题。
我刚刚更改
SheetsScopes.SPREADSHEETS.READONLY
到
SheetsScopes.SPREADSHEETS
而且效果很好。
尝试用 A4:H
替换 "Sheet1!A4:H"
我正在尝试使用 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 对话框?如果不是,您可能 运行 处于无头会话中,并且需要一些其他方法来获取用户的凭据。
显然有几个问题:
- 删除存储在 /Users/XXX/.credentials 的凭据。
- 将范围更改为 SheetsScopes.SPREADSHEETS。
- Google Sheet Sheet 本身的共享和编辑选项。
现在可以了! 谢谢大家的帮助
我遇到了同样的问题。我解决了范围内的问题。 我刚刚更改
SheetsScopes.SPREADSHEETS.READONLY
到
SheetsScopes.SPREADSHEETS
而且效果很好。
尝试用 A4:H
替换 "Sheet1!A4:H"