【问题标题】:Google Script Not Moving To Trash And Including Emails In Trash when Extracting to Sheets提取到工作表时,Google 脚本不会移动到垃圾箱并将电子邮件包含在垃圾箱中
【发布时间】: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


    【解决方案1】:

    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();
    
     }
    }
    

    【讨论】:

    • 我最初添加了unstar。当它仍然拉动它时-我绝望地积极地将移动添加到垃圾箱,因为它仍在从垃圾箱中拉出标签。我会尝试上述方法 - 但已经有一个运行 .search 的版本仍然给我带来问题 - var threads = GmailApp.search('is:starred subject:Tanner Web Opp CRM', 0, 5);
    • 我做了一个基本的改变来获得简单的身体。我认为我的问题是我一个接一个地复制并盯着同一件事做冗长而复杂的事情。我对所有这些作品进行了各种编辑!感谢您的帮助 - 我所做的更改是 for (var j=0; j&lt;messages.length; j++) { var msg = messages[j].getPlainBody();
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-18
    • 2018-06-08
    • 2019-11-28
    相关资源
    最近更新 更多