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

如何调试Google Apps Script中的doPost()函数?

调试Google Apps Script Web应用的doPost函数方法

一、先修正返回格式,同时确保日志可追踪

你当前用HtmlService.createHtmlOutput返回JSON,会被自动包裹成HTML文档,改用ContentService可直接返回纯JSON,同时不影响日志记录:

function doPost(request){
  // 区分JSON请求体和表单/查询参数
  let data;
  if(request.postData && request.postData.type === 'application/json'){
    data = JSON.parse(request.postData.contents);
    console.log('JSON请求体:', data);
  } else {
    data = request.parameters;
    console.log('表单/查询参数:', data);
  }
  return ContentService.createTextOutput(JSON.stringify(data))
    .setMimeType(ContentService.MimeType.JSON);
}

对应的WordPress代码建议添加Content-Type头,确保请求被正确识别:

$admins = [1,7,29,30,35,40];
$api_url = "https://script.google.com/macros/s/AKfycbwIdr66o2Cgp7Z09mUQrEkc5RtgenKfgZTCbCnALb7PfESk7odCPqHIWehFEEjqOPtj1g/exec";
$response = wp_remote_post($api_url, array(
  'method' => 'POST',
  'headers' => array(
    'Content-Type' => 'application/json',
  ),
  'body' => json_encode($admins),
));

二、解决doPost执行日志无法查看的调试方案

1. 将请求日志写入Google Sheets

直接把请求的完整信息写入表格,替代console.log,不受Executions标签限制:

function logToSheet(data) {
  // 替换为你的表格ID和工作表名称
  const sheet = SpreadsheetApp.openById('你的表格ID').getSheetByName('日志表');
  sheet.appendRow([new Date().toISOString(), JSON.stringify(data)]);
}

function doPost(request){
  // 记录完整请求对象(包括body、headers等)
  logToSheet(request);
  // 后续处理逻辑...
  return ContentService.createTextOutput(JSON.stringify('接收成功'))
    .setMimeType(ContentService.MimeType.JSON);
}

2. 使用Google Cloud日志查看器

Executions标签的日志存在限制,可直接通过Google Cloud查看完整日志:

  • 打开Apps Script编辑器,点击右上角「项目设置」,复制「项目ID」
  • 进入Google Cloud控制台,搜索该项目ID,打开「日志」页面
  • 筛选「Cloud Function」或「Apps Script」类型,即可找到所有POST请求的详细日志,包括console.log输出和错误堆栈

3. 本地工具测试POST请求

用Postman、curl等本地工具构造请求,快速验证doPost逻辑:

  • 用Postman发送POST请求,设置Content-Type: application/json,body填入目标数组的JSON字符串
  • 在Apps Script编辑器中编写测试函数,模拟request参数直接运行doPost:
// 模拟测试用的request对象
function testDoPost(){
  const mockRequest = {
    postData: {
      contents: JSON.stringify([1,7,29,30,35,40]),
      type: 'application/json'
    }
  };
  doPost(mockRequest);
}

运行该测试函数后,可直接在Executions标签查看完整日志,提前排查逻辑问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 04:15:34