使用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);
显然有几个问题在一起:
- 删除存储在/Users/XXX/.credentials中的凭据。
- 将范围更改为SheetsScopes.SPREADSHEETS。
- Google工作表共享和编辑选项位于工作表本身。
现在它有效! 谢谢你们的帮助
我遇到了同样的问题。 我解决了范围内的问题。 我刚改变了
SheetsScopes.SPREADSHEETS.READONLY
至
SheetsScopes.SPREADSHEETS
而且效果很好。
必须以交互方式使用Java API,如果您在无法弹出Web浏览器的服务器上运行它(这将允许您批准OAuth对话框),那么身份validation流程将无法正常运行凭证,不会起作用。
运行此操作时,您是否看到弹出的浏览器会批准OAuth对话框? 如果没有,您可能会在无头会话中运行,并且需要一些其他方法来获取用户的凭据。
尝试用A4:H替换“Sheet1!A4:H”