Apps Script跨项目URLfetch调用时doGet(e)未触发问题排查
问题排查与解决方案
1. 核心错误:URLFetchApp 拼写大小写错误
你的调用端代码中,URLfetchapp.fetch(link)存在大小写错误——Google Apps Script 对类名大小写敏感,正确的类名是 URLFetchApp(首字母大写,F 和 A 也需大写)。拼写错误会导致无法正确发起请求,这是 doGet 未触发的直接原因之一。
修正后的调用代码:
function foo() { let sku = 'D30451Z'; let price = 8.50; // 对参数进行URL编码,避免特殊字符导致解析失败 let reqBD = `?sku=${encodeURIComponent(sku)}&price=${encodeURIComponent(price)}`; let link = `https://script.google.com/a/macros/s/AKffmPwm42Xg/exec${reqBD}`; // 添加身份验证头,适配「仅我可访问」的Web App权限 let options = { headers: { 'Authorization': 'Bearer ' + ScriptApp.getOAuthToken() } }; let fet = URLFetchApp.fetch(link, options); Logger.log(fet.getResponseCode()); // 输出200 Logger.log(fet.getContentText()); // 查看Web App返回的响应内容,确认执行状态 }
2. Web App端补充响应返回
当前你的 doGet 函数没有返回任何响应内容,虽然浏览器访问可能触发执行,但通过 URLFetchApp 调用时,明确返回响应能确保请求链路完整,也方便排查问题。修改Web App的 doGet 函数:
function doGet(e) { let parms = e.parameter; let sku = parms['sku']; let price = parms['price']; doOtherStuf(sku, price); //处理信息的其他函数 // 返回文本响应,告知调用端执行状态 return ContentService.createTextOutput('执行成功') .setMimeType(ContentService.MimeType.TEXT); }
3. 权限适配说明
因为你的Web App设置为「以我身份执行」「仅我可访问」,调用端脚本必须与Web App属于同一个Google账号。添加 Authorization 请求头携带当前用户的OAuth令牌,能确保请求被Web App的权限系统认可,避免因身份验证失败导致的隐性执行问题。
内容的提问来源于stack exchange,提问作者JohnHMr
相关产品推荐
相关产品推荐

