我在菜单中添加了一个功能,允许用户点击"提取电子邮件" - 这会将电子邮件提取到活动的预先格式化的电子表格中 问题: - 我一直在提取相同的电子邮件......所以我做了一些事情
1 - 我在Gmail中有一个基于特定主题的过滤器 1.给这些电子邮件加注星标 2.应用特定标签 2-I搜索是:在提取时和循环后加星标 - 我删除星号 - 我可以刷新我的收件箱并看到星星出现并消失 3 - 如果我运行这个,并且让我们说4封电子邮件 - 并立即再次运行 - 脚本运行,它说完了,没有任何新内容。
然而,总共有一封新电子邮件进入 - 它自我定位,并在该线程中合并 - 如果我再次点击提取电子邮件 - 我将收到该帖子中的每封电子邮件以及新邮件 - 即使线程中的其他消息没有加星标
function myFunction() {
var ss = SpreadsheetApp.getActiveSheet();
var label = GmailApp.getUserLabelByName("is:starred TannerWebOppCRM");
var threads = label.getThreads();
for (var i=0; i<threads.length; i++){
var messages = threads[i].getMessages();
for (var j=0; j<messages.length; j++)
{
var msg = messages[j].getBody();
var sub = messages[j].getSubject();
var dat = messages[j].getDate();
ss.appendRow([msg, sub, dat])
GmailApp.unstarMessage(messages[j]);
}
threads[i].removeLabel(label);
threads[i].moveToTrash();
}
}
我试图把物品搬到垃圾桶里 - 但是他们还没有去。另外,当我手动将物品移到垃圾桶时 - 它们仍然存在。
我已经阅读了半天的解决方案,似乎无法确定脚本,只会收到新消息。
在这种情况下 - 一旦我抓取数据 - 电子邮件可以被清除/存档/未标记 - 任何东西,一旦加载 - 我将总是有时间...意味着如果用户点击&#34;获取电子邮件&# 34;星期三下午4点,我可以从那时开始搜索电子邮件数据......
答案 0 :(得分:0)
getUserLabelByName()方法检索给定标签名称的标签。它不能用于执行搜索。此外,无论如何都不需要将线程取消星标,因为无论如何都要将它移动到垃圾箱。
function myFunction() {
var ss = SpreadsheetApp.getActiveSheet();
var threads = GmailApp.search("is:starred in:TannerWebOppCRM");
for (var i=0; i<threads.length; i++){
var messages = threads[i].getMessages();
for (var j=0; j<messages.length; j++) {
var msg = messages[j].getBody();
var sub = messages[j].getSubject();
var dat = messages[j].getDate();
ss.appendRow([msg, sub, dat]);
}
threads[i].moveToTrash();
}
}