服务帐户可以调用Google Apps脚本执行API吗?

Ste*_*n L 11 google-apps-script service-accounts execution-api

我想使用服务帐户通过Apps脚本执行API访问Google表格,但是文档中是否支持这一点并不清楚.

我尝试过的步骤(导致Execution API的403状态)是:

  1. 创建一个新的(未绑定的)Apps脚本
  2. 访问链接的Developer Console项目
  3. 启用Execution 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"
  }
}
Run Code Online (Sandbox Code Playgroud)

这不起作用,因为服务帐户永远无法访问Execution API吗?或者上面的步骤有问题吗?

Par*_*Ark 10

原始403错误表示您错误地为您的服务帐户设置了身份验证.但是,即使您已开始工作,截至2015年11月10日,您也无法通过服务帐户执行应用程序脚本.

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


The*_*ter 6

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

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

  • 原作者询问当通过 Google 服务帐户调用部署为执行 API 的 Google Apps 脚本时是否可以访问它。Apps 脚本 API 与部署为执行 API 的自定义 Apps 脚本完全不同且独立。 (2认同)

Bar*_*son 2

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

从脚本编辑器中选择以下菜单项:资源 > 开发人员控制台项目

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

参见这个答案