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

从WordPress调用Google Apps Script遭遇400错误求助

问题分析与解决方案

核心问题定位

  • GAS执行记录有调用痕迹但无日志:请求已到达GAS,但因请求格式不合法,脚本未进入执行阶段就被拦截,因此无日志输出。
  • Thrive Auto发送的postData为{"":""}:属于无效JSON结构,GAS的doPost函数无法解析,直接返回400 Bad Request。
  • curl调用返回“页面未找到”:大概率是curl命令的请求头或数据格式不符合GAS要求,与Thrive Auto的问题本质一致。

针对性解决方案

1. 修正Thrive Auto的请求配置

确保Thrive Auto的POST请求满足GAS的要求:

  • 强制设置请求头Content-Type: application/json
  • 发送的JSON数据必须是合法键值对结构(如{"key": "value"}),避免空键或未正确序列化的无效格式
  • 检查参数映射规则,确认所有字段都被正确赋值并序列化

2. 修复curl命令的调用格式

正确调用GAS Web App的curl命令示例:

curl -X POST \
  "https://script.google.com/macros/s/你的脚本ID/exec" \
  -H "Content-Type: application/json" \
  -d '{"key1": "value1", "key2": "value2"}'

注意:

  • 必须携带Content-Type请求头
  • JSON数据用单引号包裹,避免shell转义问题
  • 确认使用的是最新的Web App部署URL,而非旧测试链接

3. 给GAS添加容错与日志捕获(可选)

修改doPost函数,增加错误捕获与日志记录,方便排查异常请求:

function doPost(e) {
  try {
    // 记录原始请求数据到Sheet
    SpreadsheetApp.openById("你的Sheet ID").getSheetByName("日志").appendRow([new Date(), JSON.stringify(e)]);
    
    // 校验请求数据合法性
    if (!e.postData || !e.postData.contents) {
      return ContentService.createTextOutput(JSON.stringify({status: "error", message: "无效的请求数据"})).setMimeType(ContentService.MimeType.JSON);
    }
    const data = JSON.parse(e.postData.contents);
    // 后续业务逻辑...
    return ContentService.createTextOutput(JSON.stringify({status: "success"})).setMimeType(ContentService.MimeType.JSON);
  } catch (err) {
    // 记录错误信息
    SpreadsheetApp.openById("你的Sheet ID").getSheetByName("日志").appendRow([new Date(), "错误: " + err.message]);
    return ContentService.createTextOutput(JSON.stringify({status: "error", message: err.message})).setMimeType(ContentService.MimeType.JSON);
  }
}

4. 确认GAS部署配置

再次核对Web App部署设置:

  • 执行权限:「以我身份执行」(确保脚本拥有访问关联资源的权限)
  • 访问权限:「任何人,甚至匿名」(避免权限拦截请求)
  • 部署后复制最新的URL,不要使用旧的测试链接

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 23:51:02