通过Node.js API调用Google Apps Script函数失败:请求实体未找到
问题排查与解决方案
核心问题:scripts.run找不到的是已部署的API可执行版本
你调用script.projects.get能成功,说明脚本项目本身存在且有权限访问,但scripts.run调用的是你部署的「API可执行文件」而非项目本身,出现“Requested entity was not found”通常是以下原因:
1. 部署的API可执行文件配置失效
- 重新部署脚本为API可执行文件:
- 打开Apps Script项目,点击右上角「部署」→「新部署」
- 选择类型为「API可执行文件」
- 访问权限设置:选择「仅限特定用户」,添加你的服务账号邮箱(格式类似
xxx@xxx.iam.gserviceaccount.com) - 点击「部署」,确保部署状态为生效状态
- 注意:如果旧部署被删除或权限变更,即使scriptId正确,
scripts.run也会找不到实体
2. 作用域配置错误
你之前用script.projects仅能读取项目元数据,无法执行脚本;错误添加https://www.googleapis.com/auth/script导致凭证无效,是因为该作用域权限过大且未匹配服务账号的权限范围。
正确的最小必要作用域:https://www.googleapis.com/auth/script.execution
- 修改Google客户端初始化代码,将作用域替换为上述值
- 确认服务账号密钥文件路径正确、无权限问题
3. 测试阶段可选调整
如果是测试需求,可以在请求中添加devMode: true,直接调用最新脚本代码(无需依赖已部署版本),但需要服务账号对脚本项目有编辑权限:
const request = { scriptId: '<my_script_id>', resource: { function: 'myFunction', devMode: true // 上线后移除 } };
额外验证步骤
- 确认服务账号邮箱已添加到Apps Script项目的共享列表,权限至少为「查看者」(使用已部署版本)或「编辑者」(使用devMode)
- 重新开关一次Google Cloud控制台中的Apps Script API,确保服务生效
内容的提问来源于stack exchange,提问作者Rasmus Puls
相关产品推荐
相关产品推荐

