为什么我的应用程序脚本部署为可执行的API返回权限被拒绝?

我在脚本编辑器中创build了一个脚本,将其发布为“部署为API可执行文件”。 在这个脚本里面,我提供了一个doc_id给我的工作表,并定义了一个函数来获取表单中的数据。

然后我转到https://developers.google.com/apps-script/execution/rest/v1/scripts/run来testing执行API。 我添加了范围,授权应用程序,并尝试它。 我收到以下错误信息:

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

有人能告诉我我做错了什么吗?

确保应用程序脚本与正确的开发控制台项目相关联。

该脚本应与开发人员控制台项目ID相关联,该开发人员控制台项目ID与使用的OAuth 2.0客户端ID相对应(此开发控制台项目也应具有“Apps脚本执行API”)。

要更改应用程序脚本的开发者控制台项目,请select以下菜单项: 资源>开发者控制台项目…

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

即使一切正常,你可以通过"devMode":true得到这个错误"devMode":true 。 由于这个原因,当我试图为其他用户部署时,我浪费了半天的时间。

仅供将来参考。

您只需将该服务帐户用户添加为该项目的编辑器即可

添加的服务帐户中的电子邮件如下所示{project-name}@{project-name}.iam.gserviceaccount.com

我也面对错误,一切都相关联…经过一段时间的调查,我发现该表应该由链接共享 。 这是googleapis v4的限制。

我把所有的build议混合在了一起,另外我需要使用项目的非“过时”ID。 当我发布这个脚本的时候,它给了我一个ID,只要所有者运行例程,并且只在Google Chrome中(如果我在Edge上尝试它,它会失败),我就可以成功使用它。 当我发布并尝试用不同的用户它停止工作。 我打开脚本,转到文件/项目属性,然后复制较长的脚本ID。 例程开始为任何用户工作。 在下面的图片中,我用红色标出了开发者独自使用的密钥,而在绿色中,所有用户使用的密钥(他们被切割成紫袍,而我的环境用西class牙语,因此实际翻译的选项可能会有所不同,对不起)

项目属性键

我认为值得总结一下:

  1. 我遵循“ 使用执行API ”中的介绍,并快速开始将脚本发布为执行API。 (创build脚本,启用Google Apps脚本执行API,作为可执行的API发布,并由大家发布) 在这里输入图像描述
  2. 我使每个人都可以看到脚本,在File / Sharing上: API共享设置
  3. 我确信在我的调用中devMode没有被设置为true。 这里的JavaScript调用snipet: JavaScript调用片段
  4. 我确信项目中的所有范围都包含在OAuth请求中: API范围 API OAuth调用
  5. 我必须等待几分钟才能获得所有安全权限(例如,OAuth凭证)

基本上,这些都是我需要遵循的所有必要步骤,以便启动和运行脚本。 希望它有帮助。 最后,我希望你能看到我在失败和失败后所看到的东西: API调用失败 API调用成功

谢谢!

我有相同的权限问题,我通过将Google表格的状态更改为公开状态来解决问题。 现在我可以使用GET方法读取数据