我在脚本编辑器中创建了一个脚本,将其发布为" Deploy as API executable"。在这个脚本中,我向我的工作表提供了一个doc_id,并定义了一个从该工作表中获取数据的函数。
然后我去https://developers.google.com/apps-script/execution/rest/v1/scripts/run测试执行API。我添加了范围,授权应用程序并尝试了它。我收到以下错误消息:
"error": {
"code": 403,
"message": "The caller does not have permission",
"status": "PERMISSION_DENIED"
}
有人能告诉我我做错了吗?
答案 0 :(得分:23)
确保应用脚本与正确的开发控制台项目相关联。
该脚本应与使用的OAuth 2.0客户端ID对应的开发控制台项目ID相关联(此开发控制台项目还应具有" Apps脚本执行API"已启用)。
要更改应用脚本的开发者控制台项目,请选择以下菜单项:资源>开发者控制台项目......
在此屏幕上输入开发控制台的项目编号。
答案 1 :(得分:8)
即使一切正常,您也可以通过"devMode":true
获得该错误。
多亏了这一点,当我尝试为其他用户部署时,我浪费了半天时间。
仅供将来参考。
答案 2 :(得分:3)
您只需将服务帐户用户添加为项目的编辑器
要添加的服务帐户中的电子邮件看起来像这样
{project-name}@{project-name}.iam.gserviceaccount.com
答案 3 :(得分:2)
我混合了你的所有建议,而且我需要使用非过时的#39;项目的ID。当我发布脚本时,它会给我一个ID,只要所有者运行例程,我就会成功使用该ID,并且仅在Google Chrome中使用(如果我在Edge上尝试它就会失败)。当我发布并与其他用户一起尝试时,它会停止工作。我打开脚本,转到文件/项目属性,然后复制更长的脚本ID。然后,例程开始为任何用户工作。在下图中,我用红色表示单独为开发人员工作的密钥,在绿色表示适用于所有用户的密钥(他们在purpouse中被剪切,我的环境是西班牙语,因此实际翻译的选项可能会有所不同,抱歉)
我认为值得总结一下:
基本上,这些是我需要遵循的所有必要步骤才能使脚本运行起来。希望能帮助到你。最后,我希望您看到我失败时及成功时看到的内容:
谢谢!
答案 4 :(得分:1)
我也遇到了错误,所有内容都是相关联的...经过一段时间的调查后,我发现表格应该通过链接分享。这是googleapis v4的限制。
答案 5 :(得分:0)
我遇到了同样的权限问题,我通过将google工作表的状态更改为public来解决了这个问题。现在我可以使用GET方法读取数据