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

GAS脚本报错'Script function not found: doPost',求POST调用解决方案

解决方案:修复GAS WebApp "Script function not found: doPost" 错误

1. 检查并重新部署WebApp(最关键)

出现该错误最常见的原因是WebApp部署版本未包含最新的doPost函数,或使用了错误的访问链接:

  • 打开respond.gs所在的脚本项目,点击部署 > 新建部署
  • 部署类型选择「Web应用」
  • 执行权限:测试阶段建议选「任何人,甚至匿名」,正式环境按需调整
  • 访问权限:与执行权限保持一致
  • 点击「部署」,复制生成的https://script.google.com/macros/s/xxx/exec链接,替换send.gs中的旧链接
  • 注意:每次修改doPost函数后,必须重新部署新版本,旧部署链接不会自动同步代码更新

2. 修正send.gs的请求参数

UrlFetchApp的配置有细节要求,错误参数会导致WebApp无法识别POST请求:
修改send.gs的options配置,将Content-Type替换为UrlFetchApp专用的contentType参数:

function sendPostRequest() {
  var data = {
    'name': 'Bob Smith',
    'age': 35,
    'pets': ['fido', 'fluffy']
  };
  var headers = {
    "key":"hehehe"
  };
  var options = {
    "headers": headers,
    "contentType": "application/json", // 注意是驼峰的contentType,不是Content-Type
    "method": "post",
    "payload": JSON.stringify(data),
    "muteHttpExceptions": true // 可选,方便查看完整错误信息
  };

  const response = UrlFetchApp.fetch("https://script.google.com/macros/s/<foo>/exec", options);
  console.log(response.getContentText())
}

3. 优化respond.gs的doPost函数(可选)

原代码本身无语法错误,可优化为更健壮的版本方便调试:

function doPost(e){
  // 解析POST请求的JSON数据(如需处理请求内容)
  let receivedData = {};
  if (e.postData && e.postData.contents) {
    receivedData = JSON.parse(e.postData.contents);
  }
  // 返回JSON格式响应
  const responsePayload = JSON.stringify({
    method: "POST",
    message: "hello,world",
    received: receivedData // 可选,返回接收的数据用于验证请求是否成功
  });
  return ContentService.createTextOutput(responsePayload)
    .setMimeType(ContentService.MimeType.JSON);
}

常见误区排查

  • 不要使用带/dev后缀的测试链接,该链接仅支持脚本编辑器内测试,外部请求必须使用/exec链接
  • 若WebApp设置了权限限制,需确保send.gs的执行账号有权访问该WebApp(同账号下的脚本默认有权限)
  • 若请求不带有效payload,部分场景下WebApp会将请求识别为GET,从而寻找doGet函数而非doPost

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 17:17:41