使用Java通过API写入GoogleSheet

时间:2016-05-30 08:16:07

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

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

要写入Google表格,请使用:

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);

4 个答案:

答案 0 :(得分:12)

显然有几个问题在一起:

  1. 删除存储在/Users/XXX/.credentials。
  2. 中的凭据
  3. 将范围更改为SheetsScopes.SPREADSHEETS。
  4. Google Sheet在“工作表”上共享和编辑选项。
  5. 现在它有效! 谢谢你们的帮助

答案 1 :(得分:3)

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

SheetsScopes.SPREADSHEETS.READONLY

 SheetsScopes.SPREADSHEETS

它运作良好。

答案 2 :(得分:0)

必须以交互方式使用Java API,如果您在无法弹出Web浏览器的服务器上运行它(这将允许您批准OAuth对话框),那么身份验证流程不会获得适当的证书,不会有效。

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

答案 3 :(得分:-1)

尝试更换&#34; Sheet1!A4:H&#34;用A4:H