Google Apps Script的doGet/doPost无法捕获第三方服务器请求排查
排查Google Apps Script无法捕获服务器请求的问题
1. 检查部署权限与版本
- 部署Web应用时,必须将权限设置为任何人,甚至匿名,否则服务器的匿名请求会被拦截,无法触发
doGet/doPost。 - 每次修改脚本后,必须点击“部署>管理部署>编辑>新版本”重新发布,旧版本的URL不会同步脚本修改。
2. 修复脚本的潜在问题
你的脚本存在两个核心问题:一是未返回响应,服务器可能判定请求失败;二是doPost中直接访问e.postData.contents可能因请求格式问题报错终止,导致日志无法记录。修改后的脚本如下:
function doGet(e) { // 记录完整请求对象 Logger.log(JSON.stringify(e)); Logger.log("当前脚本URL: " + ScriptApp.getService().getUrl()); // 必须返回响应,否则请求会被视为失败 return ContentService.createTextOutput("GET请求已接收"); } function doPost(e) { // 优先记录完整请求上下文,避免局部报错导致日志丢失 Logger.log("完整POST请求对象: " + JSON.stringify(e)); if (e.postData) { Logger.log("POST内容: " + e.postData.contents); } Logger.log("请求参数: " + JSON.stringify(e.parameters)); Logger.log("当前脚本URL: " + ScriptApp.getService().getUrl()); // 返回响应,告知服务器请求已处理 return ContentService.createTextOutput("POST请求已接收"); }
3. 验证请求的有效性
- 在服务器端添加日志,记录发送请求的状态码(如403、404)和返回内容,确认请求是否真的到达了GAS脚本。
- 手动测试:用浏览器访问脚本URL测试
doGet,用curl或Postman发送POST请求测试doPost,比如:curl -X POST -H "Content-Type: application/json" -d '{"key":"value"}' 你的脚本URL
4. 确认日志查看位置
- 日志需在脚本编辑器>查看>日志中查看,或在Web应用的“管理部署>版本>执行记录”中查看,确保查看的是当前部署版本的日志。
内容的提问来源于stack exchange,提问作者עדוא טייב
相关产品推荐
相关产品推荐

