You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Apps Script API scripts.run执行函数遇404及403权限错误求助

问题描述

已完成以下操作:

  • 创建Google Cloud Project并启用Apps Script API
  • 编写Apps Script函数:
function remoteEXE() {
    return "Ok Google."
}
  • 将该Apps Script项目与上述GCP绑定
  • 通过OAuth2.0 Playground选择作用域https://www.googleapis.com/auth/script.external_request,获取授权码、访问令牌及刷新令牌
  • 构造POST请求,URL包含scriptID,请求体如下:
{
"function": "remoteEXE",
"parameters": []
}

遇到的报错情况:

  • 发送请求后收到404错误:请求的实体未找到
  • 创建API可执行部署后仍报404
  • 添加"devMode": true后出现403错误:调用者无权限
  • 替换URL中scriptID为deploymentID仍报404
  • 移除devMode又回到403错误
  • 尝试在GAS清单文件添加相同OAuth作用域、重新执行OAuth步骤均无效

更新(2023/03/01)

  • 尝试部署为Web应用无变化,确认API Executable部署提供带:run后缀的URL
  • 添加Cloud Functions IAM角色(未找到Apps Script API Execute角色),自身为所有者角色
  • 错误报告和执行选项卡均无错误信息
解决方案
  1. 确认请求URL格式
    调用API可执行部署的正确URL必须是:

    https://script.googleapis.com/v1/scripts/{你的脚本ID}:run
    

    注意要保留:run后缀,且使用脚本ID而非部署ID——部署ID仅适用于Web应用部署,不适用于scripts.run接口。

  2. 更换OAuth作用域
    scripts.run接口需要的作用域是https://www.googleapis.com/auth/script.scriptapp,不是你之前用的script.external_request。去OAuth2.0 Playground换用这个作用域,重新获取授权令牌。

  3. 配置正确的IAM角色
    在绑定的GCP项目中,给授权账号添加Apps Script API Executor角色:

    • 进入GCP控制台的「IAM与管理员 → IAM」页面
    • 点击「添加成员」,输入授权账号邮箱
    • 在角色列表中选择「Cloud Platform → Apps Script API Executor」
      若找不到该角色,可临时用Editor角色测试(生产环境不建议)。
  4. 检查部署配置
    创建API可执行部署时,确认:

    • 部署类型选「API可执行」
    • 访问权限根据需求设置(测试阶段可设为「任何人,甚至匿名」)
    • 部署完成后,复制脚本ID(不是部署ID)用于请求URL
  5. 修正清单文件的作用域
    打开Apps Script的appsscript.json清单文件,添加正确的OAuth作用域:

    {
      "oauthScopes": [
        "https://www.googleapis.com/auth/script.scriptapp"
      ]
    }
    

    保存后重新部署项目。

  6. 验证devMode的使用条件
    当设置"devMode": true时,只有脚本的所有者能调用接口,此时要确保OAuth令牌对应的账号就是脚本所有者。如果用其他账号调用,必须关闭devMode,同时确保部署的访问权限配置正确。

内容的提问来源于stack exchange,提问作者Lucas Sandre

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 13:34:57