如何向带DEV链接的Google Apps Script发送JSON POST请求
Google Apps Script 开发端点POST请求权限问题解决方案
核心原因
/macros/s/[ID]/dev格式的开发部署端点,仅允许拥有脚本编辑权限的账号携带有效OAuth令牌访问,不支持匿名请求,你的问题由配置缺失、令牌权限不足导致。
操作步骤
1. 配置部署参数
首次部署为Web应用时,两个参数必须正确设置:
- 执行身份选择 你自己的账号
- 有权访问的人选择 仅限我自己(企业账号可选择对应网域范围)
2. 配置项目清单文件
先开启清单文件显示:进入GAS编辑器左侧「项目设置」,勾选「在编辑器中显示appsscript.json清单文件」,再打开清单文件添加如下配置,确保OAuth权限足够:
{ "timeZone": "Asia/Shanghai", "dependencies": {}, "webapp": { "executeAs": "USER_DEPLOYING", "access": "MYSELF" }, "oauthScopes": [ "https://www.googleapis.com/auth/script.external_request", "https://www.googleapis.com/auth/drive.readonly" ], "runtimeVersion": "V8" }
保存后重新运行一次任意脚本触发权限授权。
3. 本地CURL调用方法
开发端点不能直接匿名调用,需要携带有效OAuth令牌,先在GAS中运行以下临时函数获取令牌:
function getTempToken() { console.log(ScriptApp.getOAuthToken()) }
将控制台输出的令牌复制,替换到下方CURL命令对应位置即可调用:
curl -X POST \ -H "Authorization: Bearer 你获取的临时令牌" \ -H "Content-Type: application/json" \ -d '{"debug":"data ok"}' \ https://script.google.com/macros/s/你的脚本ID/dev
4. 调试注意事项
- 临时令牌有效期为1小时,过期后重新运行上述函数获取即可
- 代码修改后无需重新部署,直接调用开发端点就会运行最新版本,无需每次生成新版本
- 不要使用重定向后的
script.googleusercontent.com域名调用,必须用原始的script.google.com域名 - 确认生成令牌的Google账号和脚本所有者/编辑者账号为同一个,否则会触发权限错误
内容的提问来源于stack exchange,提问作者Jailer Betancourt
相关产品推荐
相关产品推荐

