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

Why does my apps script deployed as API executable return Permission Denied?

我在脚本编辑器中创建了一个脚本,并将其发布为 "Deploy as API executable"。在这个脚本中,我为我的 sheet 提供了一个 doc_id 并定义了一个函数来从 sheet.

获取数据

然后我去 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"
}

谁能告诉我我做错了什么?

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

该脚本应与与所用 OAuth 2.0 客户端 ID 相对应的开发控制台项目 ID 相关联(此开发控制台项目还应启用 "Apps Script Execution API")。

要更改应用程序脚本的开发人员控制台项目 select 以下菜单项:资源 > 开发人员控制台项目...

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

即使一切正常,您也可以通过 "devMode":true 得到该错误。 由于这个,我在尝试为其他用户部署时浪费了半天时间。

仅供以后参考。

我有同样的权限问题,我通过将 google sheet 的状态更改为 public 来解决它。现在我可以使用 GET 方法读取数据

您只需将服务帐户用户添加为项目的编辑者

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

我也遇到了这个错误,所有的东西都相应地关联了......经过一段时间的调查,我发现 sheet 应该被 link[ 共享=13=]。这是 googleapis v4 的限制。

我综合了您的所有建议,而且我需要使用项目的非 'obsolete' ID。当我发布脚本时,它给了我一个 ID,只要所有者运行例程,我就可以成功使用它,并且只在 Google Chrome 内(如果我在 Edge 上尝试它会失败)。当我发布并与其他用户一起尝试时,它停止工作。我打开脚本,转到文件/项目属性并复制较长的脚本 ID。然后例程开始为任何用户工作。在下图中,我用红色强调了仅适用于开发人员的密钥,并用绿色强调了适用于所有用户的密钥(他们被削减了目的,我的环境是西班牙语,所以实际翻译的选项可能会有所不同,抱歉)

我认为值得做一个总结:

  1. 我遵循 'Using the execution API' and quickstarts to publish my script as execution API. (Create the script, enable Google Apps Script Execution API, publish as API executable with Access by everybody)
  2. 的说明
  3. 我在文件/共享上让所有人都可以看到该脚本:
  4. 我确保在我的通话中没有将 devMode 设置为 true。这里是 JavaScript 调用片段:
  5. 我确保在 OAuth 请求期间包含项目中的所有范围:
  6. 我必须等待几分钟才能准备好所有安全权限(即 OAuth 凭据)

基本上,为了启动脚本和 运行,这些是我需要遵循的所有必需步骤。希望能帮助到你。最后希望大家看看我在失败和成功时看到了什么:

谢谢!