我已经看到这个问题的不同版本的问法,但我似乎无法绕过我的头的答案。我有下面的代码,每小时运行一次,将邮件中的信息发送到我的Wix网站,以解析信息。一旦该函数从我的Wix网站获得返回,我想触发另一个函数来通知订阅者。
var POST_URL = "https://www.myWixSite.com/_functions/shiurAddition";
var EMAIL_URL = "https://www.myWixSite.com/_functions/shiurNotify";
function gmailInboxToWix() {
var oldLabel = GmailApp.getUserLabelByName("toBeProcessed");
var newLabel = GmailApp.getUserLabelByName("ProcessedByScript");
var threads = oldLabel.getThreads();
for (var i = 0; i < threads.length; i++) {
var messages = threads[i].getMessages();
for (var j = 0; j < messages.length; j++) {
var HTML = messages[j].getBody()
var Date = messages[j].getDate()
messages[j].markRead()
var data = {Date: Date, HTML: HTML};
var options = {
"method": "post",
"headers": {
"Content-Type": "application/json",
},
"payload": data
};
var response = UrlFetchApp.fetch(POST_URL, options)
Logger.log(response)
var emailResponse = UrlFetchApp.fetch(EMAIL_URL, response);
}
threads[i].removeLabel(oldLabel).refresh();
threads[i].addLabel(newLabel);
}
}
当运行这个功能时,我收到了来自谷歌的一个错误。
异常: 错误值(文件 "代码 "第24行)。
第24行是这段代码。
var emailResponse = UrlFetchApp.fetch(EMAIL_URL, JSON.stringify(response));
遇到的问题
试图使用字符串化的对象来代替高级参数
解释
根据 文件, fetch()
方法有两个参数。
因此,传递除了 Object
将会失败。
JSON.stringify()
返回一个 绳子,因此是无效的数据类型。fetch()
的实例,因此是无效的数据类型。HTTPResponse
,这也是无效的。解决办法
按照Tanaike的建议,在第一个请求之后,但在第二个请求之前,将以下内容改为 payload
参数到响应的内容,然后用 options
,不是 response
:
options.payload = response.getContentText();
备注
contentType
高级参数,用它来设置类型,其余的将由服务处理,你不需要显式设置头。