如何在Google Apps Script web应用程序中提取JSON对象



有人能指出这个函数不起作用的原因吗?

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
}
}

脚本似乎在倒数第二行失败(vary(;但当我在样本数据上运行它时,我能够访问Im目标的密钥和值对,这是发件人地址(它将"电话:+63917xxxxx:发送到我的电子邮件(。有人知道当它作为网络应用程序运行时为什么会失败吗?

我认为在您的脚本中,var contents = JSON.parse(e.postData.contents);可以用作解析的对象。我认为您出现错误的原因是var data = JSON.stringify(contents,null,4)将对象转换为字符串。那么下面的修改怎么样?

发件人:

var contents = JSON.parse(e.postData.contents);
var data = JSON.stringify(contents,null,4);

收件人:

var data = JSON.parse(e.postData.contents);
  • 在这个修改中,ytel:+63917xxxxx

注意:

  • 当您修改Web应用程序的脚本时,请将Web应用程序重新部署为新版本。这样,最新的脚本就会反映到Web应用程序中。请小心

在解析json请求之前使用模板文本。

const body = JSON.parse(`${e.postData.contents}`)

e.postData.contents在整个json请求中返回一个不带字符串的json。当您尝试在不包装字符串的情况下解析它时,它将返回类似于{"sheetName":"TEST"}的内容,并返回Uncaught SyntaxError: "[object Object]" is not valid JSON

最新更新