13

我想使用服务帐户通过 Apps Script Execution API访问 Google 表格,但从文档中不清楚这是否受支持。

我尝试过的步骤(导致执行 API 出现 403 状态)是:

  1. 创建一个新的(未绑定的)Apps 脚本
  2. 访问链接的开发者控制台项目
  3. 启用执行 API
  4. 在同一个项目中创建一个新的服务帐户(下载生成的 JSON 文件)
  5. 创建一个新的 Google 表格并将其与服务帐户的电子邮件地址共享(这是我最不确定的步骤
  6. 编写一个从电子表格中读取的应用程序脚本函数
  7. 从脚本编辑器手动运行脚本(正确设置脚本的范围)
  8. 发布脚本(“部署为 API 可执行文件”),使其可供“任何人”访问
  9. 使用服务帐户和链接到脚本的范围创建一个新的 OAuth2 令牌(在我们的例子中只是' https://www.googleapis.com/auth/spreadsheets ')
  10. 尝试使用令牌调用 Execution API

这是我得到的回应:

{
  "error": {
    "code": 403,
    "message": "The caller does not have permission",
    "status": "PERMISSION_DENIED"
  }
}

这是否不起作用,因为服务帐户永远无法访问执行 API?还是上面的步骤有问题?

4

3 回答 3

13

您最初的 403 错误表明您为服务帐户设置了错误的身份验证。但是,即使您可以正常工作,截至目前(2015 年 11 月 10 日),您也无法通过服务帐户执行 Apps 脚本。

这是一个已知错误,正在 Apps Scripts Issue Tracker中进行跟踪。

于 2015-11-10T23:26:44.240 回答
5

目前(2020 年),服务帐户无法使用 Apps 脚本 API。如文档中所写,

警告:Apps 脚本 API 不适用于服务帐户。

于 2020-08-31T15:31:32.517 回答
2

您的问题可能是脚本关联了错误的项目(即它自己的项目,而不是与您的服务帐户关联的项目)。这是您需要做的:

从 Scripts 编辑器中选择以下菜单项:Resources > Developer Console Project

在此屏幕上输入开发控制台的项目编号。

参考这个答案

于 2015-10-28T18:03:13.937 回答