有人能解释一下为什么这个功能不起作用吗?
function doPost(e) {
var contents = JSON.parse(e.postData.contents);
var data = JSON.stringify(contents,null,4);
var x = data["inboundSMSMessageList"];
var y= x.inboundSMSMessage[0].senderAddress;
GmailApp.sendEmail("sample.email@gmail.com", "test5", y);
}
它需要一个事件侦听器e,解析其内容,然后分别使用JSON.parse()和JSON.stringify()对内容进行严格的解析。这是一个字符串化数据的示例:
var data = {
"inboundSMSMessageList": {
"inboundSMSMessage": [
{
"dateTime": "Sun Jan 03 2021 01:25:03 GMT+0000 (UTC)",
"destinationAddress": "tel:21585789",
"messageId": "5ff11cef73cf74588ab2a735",
"message": "Yes",
"resourceURL": null,
"senderAddress": "tel:+63917xxxxx"
}
],
"numberOfMessagesInThisBatch": 1,
"resourceURL": null,
"totalNumberOfPendingMessages": 0
}
}
脚本似乎在倒数第二行失败(var y);但是当我在示例数据上运行它时,我能够访问Im目标的键和值对-这是发送方地址(它发送“tel:+63917xxxxx:我的电子邮件)。有人知道为什么当它作为一个Web应用程序运行时会失败吗?
2条答案
按热度按时间olhwl3o21#
我认为在您的脚本中,
var contents = JSON.parse(e.postData.contents);
可以用作解析对象。我认为你的错误的原因是由于对象被var data = JSON.stringify(contents,null,4)
转换为字符串。那么下面的修改怎么样呢?发件人:
收件人:
y
为tel:+63917xxxxx
。注意:
z4bn682m2#
在解析json请求之前使用模板文字。
const body = JSON.parse(
${e.postData.contents})
e.postData.contents返回一个json,没有字符串封装在整个json请求上。它将返回类似于
{"sheetName":"TEST"}
的东西,当你尝试解析它时,它将返回一个Uncaught SyntaxError: "[object Object]" is not valid JSON
,而当你不使用字符串 Package 的时候。