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



我想使用一个服务帐户通过Apps脚本执行API访问Google Sheet,但从文档中不清楚是否支持。

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

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

这是我得到的响应:

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

是否因为服务帐户永远无法访问执行API而无法工作?还是上面的步骤有问题?

最初的403错误表明您为服务帐户设置了不正确的身份验证。然而,即使你得到的工作,作为现在(2015年11月10日)你不能通过服务帐户执行应用程序脚本。

这是一个已知的错误,并且正在应用程序脚本问题跟踪器中进行跟踪。

目前(2020年),服务帐户不能使用应用程序脚本API。如文档中所写,

警告:Apps Script API不能用于服务帐户。

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

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

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

相关内容

  • 没有找到相关文章

最新更新