【发布时间】:2016-01-23 05:22:13
【问题描述】:
我想使用 service account 通过 Apps 脚本 Execution API 访问 Google 表格,但从文档中不清楚这是否受支持。
我尝试过的步骤(导致 Execution API 出现 403 状态)是:
- 创建一个新的(未绑定的)Apps 脚本
- 访问链接的开发者控制台项目
- 启用执行 API
- 在同一项目中创建一个新的服务帐户(下载 生成的 JSON 文件)
- 创建一个新的 Google 表格并与服务帐户的 电子邮件地址(这是我最不确定的步骤)
- 编写一个从电子表格中读取的应用脚本函数
- 从脚本编辑器手动运行脚本(设置范围 在脚本上正确)
- 发布脚本(“部署为 API 可执行文件”),使其可访问 对“任何人”
- 使用服务帐户和范围创建一个新的 OAuth2 令牌 链接到脚本(在我们的例子中只是 'https://www.googleapis.com/auth/spreadsheets')
- 尝试使用令牌调用 Execution API
这是我得到的回复:
{
"error": {
"code": 403,
"message": "The caller does not have permission",
"status": "PERMISSION_DENIED"
}
}
这是否不起作用,因为服务帐户永远无法访问执行 API?还是上面的步骤有问题?
【问题讨论】:
-
您可能错过了令牌上的 google 脚本执行 api 范围
-
谢谢 - 我试图找到这样的范围,但我找不到。 OAuth 2.0 Scopes for Google APIs 列表中的唯一一个用于通过 Execution API 访问服务,而不是用于 Execution API 本身。我还发现文档说“在应用程序代码中,为 API 调用生成一个 OAuth 访问令牌。这不是 API 本身使用的令牌,而是脚本需要的令牌。” - 我读到(可能是错误的)意思是身份断言是针对脚本使用的服务的。
-
答案是否解决了您的问题? 可以将执行 API 与服务帐户一起使用吗?
-
这里有同样的问题。项目和脚本的 id 相同。启用 API 执行。用户可以访问脚本,但仍有问题。
-
@StephenL 你有没有找到解决这个问题的方法?我目前遇到了同样的问题。
标签: google-apps-script service-accounts google-apps-script-api