我想使用一个服务帐户通过Apps脚本执行API访问Google Sheet,但从文档中不清楚是否支持。
我尝试过的步骤(导致执行API的403状态)是:
- 创建一个新的(未绑定的)Apps脚本 访问链接的Developer Console项目
- 启用执行API
- 在同一个项目(下载)中创建一个新的服务帐户生成的JSON文件)
- 创建一个新的Google表单并与服务帐户共享电子邮件地址(这是我最不确定的步骤)
- 写一个app脚本函数,从电子表格中读取
- 在脚本编辑器中手动运行脚本(设置范围) 发布脚本("作为API可执行文件部署"),使其可访问"任何人"
- 使用服务帐户和作用域创建新的OAuth2令牌链接到脚本(在我们的例子中只是"https://www.googleapis.com/auth/spreadsheets")
- 尝试使用令牌 调用执行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.
在此屏幕上输入您的开发控制台的项目编号。