使用Google Apps Script调用Smoobu API发消息遇500错误求助
问题修复:Google Apps Script调用Smoobu API发送消息报错500
错误原因分析
- 头部参数拼写错误:
ContentType应改为标准HTTP头部字段Content-Type - 请求体字段错误:Google Apps Script的
UrlFetchApp中,POST请求的请求体需放在payload字段,而非data;且发送JSON格式数据时,必须将对象转为JSON字符串 - 建议开启
muteHttpExceptions: true,方便查看完整的服务器错误响应
修正后的代码
var smoobuPostOptions = { "method": 'post', "muteHttpExceptions": true, // 开启后可查看完整错误响应,便于调试 "headers": { "Api-Key": "你的API密钥", "cache-control": "no-cache", "Content-Type": "application/json" // 修正头部字段拼写 }, "payload": JSON.stringify({ // 替换data为payload,并将JSON对象转为字符串 "subject": "Test Subject", "messageBody": "Test Message" }) }; var txTresponse = UrlFetchApp.fetch("https://login.smoobu.com/api/reservations/31418467/messages/send-message-to-guest", smoobuPostOptions); var txtData = JSON.parse(txTresponse.getContentText()); console.log(txtData); // 打印响应结果,辅助调试
关键修改说明
- 头部字段修正:
Content-Type是HTTP协议规定的标准字段,拼写错误会导致服务器无法识别请求体格式,进而无法解析数据 - 请求体格式调整:
UrlFetchApp仅识别payload作为请求体字段,且JSON数据必须转为字符串格式,否则服务器会接收到无效数据,触发500内部错误 - 调试开关:开启
muteHttpExceptions后,即使请求失败也能获取完整响应内容,帮助定位后续可能出现的权限、参数格式等问题
内容的提问来源于stack exchange,提问作者Easty
相关产品推荐
相关产品推荐

