如何调试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
相关产品推荐
相关产品推荐

