我想知道是否有人可以帮我弄清楚为什么从某个标签获取电子邮件的脚本无法正常工作。我对脚本很新,并且已经在这里和其他地方搜索了类似的帖子,但找不到任何内容。
这是现在的脚本:
var threads = GmailApp.getUserLabelByName("Test").getThreads();
for (var i = 0; i < threads.length; i++) {
var messages = GmailApp.getMessagesForThread(threads[i]);
for (var j = 0; j < messages.length; j++) {
var emails = messages[j].getPlainBody();
Logger.log(messages[j].getPlainBody());
sheet.getRange(j+1, 1).setValue(messages[j].getPlainBody());
我在那里添加了Logger以查看它是否正在收到正确的消息,它似乎确实如此:它总共得到25条消息(总共15个线程),然后写道:“记录输出太大。截断输出“。 (电子邮件很长)。但顺序是正确的,从最后一条消息到25日(涵盖15个中的9个主题)。
当我将电子邮件中的电子邮件设置为电子表格中的A列时,它表现得非常奇怪。它只放了9条消息..为什么9?它似乎也是完全随意的:它正在获取第一个线程,然后它跳过2个线程并在第4个线程中显示第二个消息,然后它转到下一个线程但跳过2个消息,然后它不再跳过并添加以下内容6条消息。并且没有明显的理由停在那里..
唯一(可能)非任意的事情是它以时间顺序从第一条消息开始,并在9条消息的线程的最后一条消息上停止。但为何停在那里?为什么要跳过它们之间的消息和线程?
有什么想法吗?
由于
答案 0 :(得分:0)
我在应用程序中使用相同的代码,它运行正常。
var mailLabel = GmailApp.getUserLabelByName(MAIL_LABEL);
var threads = mailLabel.getThreads();
for(var i = 0; i < threads.length; i++) {
var messages = threads[i].getMessages();
for(var j= 0; j < messages.length; j++) {
var data = messages[j].getPlainBody();
}
}
使用较少数量的电子邮件在另一个标签上进行测试,并在messages.length上制作一个Logger来澄清。
您应该将已处理的邮件移动到另一个嵌套标签以减少工作流程。