使用Java通过API写入GoogleSheet

我正在尝试使用带有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" } 

作为我正在使用的身份validation范围

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

显然有几个问题在一起:

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

现在它有效! 谢谢你们的帮助

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

 SheetsScopes.SPREADSHEETS.READONLY 

  SheetsScopes.SPREADSHEETS 

而且效果很好。

必须以交互方式使用Java API,如果您在无法弹出Web浏览器的服务器上运行它(这将允许您批准OAuth对话框),那么身份validation流程将无法正常运行凭证,不会起作用。

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

尝试用A4:H替换“Sheet1!A4:H”