谷歌脚本在提取到表格时不会移动到废纸篓并在垃圾箱中包含电子邮件

时间:2016-09-21 05:18:22

标签: google-apps-script gmail google-spreadsheet-api

我在菜单中添加了一个功能,允许用户点击"提取电子邮件" - 这会将电子邮件提取到活动的预先格式化的电子表格中 问题: - 我一直在提取相同的电子邮件......所以我做了一些事情

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点,我可以从那时开始搜索电子邮件数据......

1 个答案:

答案 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();

 }
}