出于某种原因,我的Google解析我们SCADA系统的每日状态电子邮件,它不再返回lineNumber属性,该属性过去是作为App Try/Catch error对象返回的参数提供的。因此,我很难找到“无法读取未定义的属性‘长度’”错误的来源,这个错误被困住了。我想知道是否有人在使用gmail方面更有经验,可能会发现我错过了一些明显的东西。
该脚本提供了一个关键的链接,我们的SCADA和实时网站张贴实时每日数据,几十年的历史操作数据。因为它处理实时数据并在半夜运行,所以我不需要进行有监督的调试,而且由于错误被困在try/catch中,所以在执行/调试日志中不会自动报告位置。简化的代码块如下所示:
// scan the subject lines of all messages in the inbox -> get daily status reports
var thread = GmailApp.search('in:Inbox subject:"<<<<search string goes here>>>>"');
var messages = GmailApp.getMessagesForThreads(thread);
// verify that only one qualifying email is available
if (thread.length != 1 | messages.length != 1) {
// send warning email to cleanup inbox and process data manually
errorEmail(inboxError);
return;
}
// process message
for (var i = 0 ; i < messages.length; i++) {
// verify messages[i] <> null
if(!messages[i]) return;
for (var j = 0; j < messages[i].length; j++) {
// message processing loop
var subject = messages[i][j].getSubject();
var body = messages[i][j].getPlainBody();
...
}
}
这个脚本在解析和发布目标数据方面历来是成功的,但是最近出现了".length“属性错误,并且阻止了脚本”优雅地“完成。我没有进行任何代码更改来触发此错误,并怀疑它可能是由底层脚本引擎中的某些更改引起的。
考虑到错误可能是试图从空对象返回.length属性的结果,我想知道我的i或j消息索引是否被错误地测试了。我知道gmail收件箱中应该只有一个每日状态报告,当i=2和j=1时会发生错误,我猜消息循环在早期的迭代中一定正常工作。
有什么想法吗?谢谢。
发布于 2021-12-22 19:34:53
这对我来说很管用:
function myfunck() {
var thread = GmailApp.search('in:Inbox subject:"Keep In Inbox"');
var messages = GmailApp.getMessagesForThreads(thread);
if (thread.length != 1 || messages.length != 1) {
Logger.log('Email Error');
return;
}
for (var i = 0; i < messages.length; i++) {
if (!messages[i]) return;
for (var j = 0; j < messages[i].length; j++) {
var subject = messages[i][j].getSubject();
var body = messages[i][j].getPlainBody();
}
}
}
https://stackoverflow.com/questions/70455095
复制相似问题