【发布时间】:2016-09-21 05:18:21
【问题描述】:
我在菜单中添加了一个功能,允许用户单击“提取电子邮件” - 这会将 gmail 提取到活动的预格式化电子表格中 问题: - 我一直在提取相同的电子邮件......所以我做了一些事情
1-我在 Gmail 中有一个基于特定主题的过滤器 1. 为这些电子邮件加注星标 2. 应用特定标签 2-我在提取时和循环后搜索 is:starred - 我删除星号 - 我可以刷新收件箱并查看星号出现和消失 3-如果我运行它,假设收到 4 封电子邮件 - 然后立即再次运行它 - 脚本运行,它说完成并且没有新内容进来。
然而,一旦收到 1 封新电子邮件 - 它自己加注星标,并在该线程中合并 - 如果我要再次单击提取电子邮件 - 我将收到该线程中的每封电子邮件以及新的电子邮件 - 即使线程中的其他消息没有加星标
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();
}
}
我试图将项目移到垃圾箱 - 但它们不去。另外,当我手动将项目移动到垃圾箱时 - 它们仍然通过。
我已经阅读了半天的解决方案,似乎无法确定只会收到新消息的脚本。
在这种情况下 - 一旦我获取数据 - 电子邮件可以被清除/存档/未标记 - 任何东西一旦加载 - 我将永远有时间......这意味着如果用户在下午 4 点点击“获取电子邮件”星期三,我可以从那时开始搜索电子邮件数据...
【问题讨论】:
标签: google-apps-script gmail google-spreadsheet-api