获取Gmail类别

时间:2014-02-02 10:00:09

标签: google-apps-script gmail

我曾经有一个有效的应用脚本,可以在我的Gmail帐户中删除旧的促销电子邮件。

它使用了代码

var label = GmailApp.getUserLabelByName("Promotions");

获取标签,然后迭代label.getThreads()以确定每个线程是否足够大以便删除。

但是,Google现在已经更改了Gmail,因此自动分类现在位于用户界面的Categories部分下方,而不是在标签列表中,因此上面的内容现在返回null

如何修复代码以检索Promotions类别?我也试过了Categories/Promotions,但它也出现了null

3 个答案:

答案 0 :(得分:6)

可以轻松搜索Gmail类别。

这是一个查找每个促销邮件的小代码。结果是一个线程数组,你可以为每个线程添加Label,这样你的旧脚本就会再次开心; - )

  var threads = GmailApp.search('category:promotions');// check the category Gmail added to the thread

documentation here

答案 1 :(得分:0)

这是我用来删除旧促销电子邮件以及其他一些类别和自定义标签的脚本。

function auto_delete_email(){
  delete_Label ("Cameras",30);
  delete_Label ("Travel",365);
  delete_Category ("Social",90);
  delete_Category ("Finance",365*3);
  delete_Category ("Forums",90);
  delete_Category ("Promos",365*3);
}

function delete_Label(mailLabel,delayDays) {  
  var label = GmailApp.getUserLabelByName(mailLabel);   
  if (!label) {return false;}
  var maxDate = new Date(); 
  maxDate.setDate(maxDate.getDate()-delayDays);    
  var threads = label.getThreads();  
  for (var i = 0; i < threads.length; i++) {  
    if (threads[i].getLastMessageDate()<maxDate){  
      threads[i].moveToTrash();
    } 
  } 

function delete_Category(mailCategory,delayDays) {  
  var maxDate = new Date(); 
  maxDate.setDate(maxDate.getDate()-delayDays);    
  var threads = GmailApp.search('category:' + mailCategory);
  for (var i = 0; i < threads.length; i++) {  
    if (threads[i].getLastMessageDate()<maxDate){  
      threads[i].moveToTrash();
    } 
  } 
} 

答案 2 :(得分:0)

您还可以扩展搜索条件以使用"older_than:1y"之类的(d,m,y)来模仿Gmail应用程序中的搜索框功能。这可能会有所帮助,因为我在使日期比较顺利进行方面遇到很多问题。

例如:

function delete_old_Category() {  
  var maxDate = new Date(); 
  maxDate.setDate(maxDate.getDate()- 180);    
  var threads = GmailApp.search("category:promos older_than:6m",0, 100);
  for (var i = 0; i < threads.length; i++) {  
     threads[i].moveToTrash(); {  
  
    } 
  } 
}