Google Apps脚本 - Gmail,使用特定标签永久删除垃圾中的电子邮件

时间:2013-04-14 02:15:25

标签: javascript gmail google-apps-script

我正在尝试制作一个脚本,可以立即永久地自动删除某个发件人的电子邮件,因为Gmail只允许使用过滤器向垃圾邮件发送电子邮件30天。请不要建议默认过滤器就足够了,就我的情况而言,至关重要的是我不知道我收到了来自此发件人的电子邮件。

我当前的脚本如下所示:

function deleteForever(labelName) {
    var threads = GmailApp.search("in:trash label:" + labelName);
    for (var i = 0; i < threads.length; i++) {
      threads[i].moveToTrash(); // Where I would need a delete forever trigger
    }
};

但是,我一直无法找到使用GmailThread的方法并永久删除它,因为没有用于此目的的功能。我想看看是否有一种方法可以使用JavaScript完成任务,但一直无法弄清楚方法。

有没有人知道如何设置这些电子邮件,以便在收到时永久删除自己?

5 个答案:

答案 0 :(得分:13)

根据设计,无法使用GmailApp永久删除电子邮件。

答案 1 :(得分:12)

@ karan的回答已经指出了对我有用的解决方案,但由于缺乏经验/非专业开发人员,我花了一点时间将其转化为原始问题的工作解决方案。以下是我用于执行此任务的步骤的简要说明:

  1. 在我的脚本中创建以下函数:

    function deleteForever(userId, labelName) {
      var threads = GmailApp.search("in:trash label:" + labelName);
      for (var i = 0; i < threads.length; i++) {
        Gmail.Users.Messages.remove(userId, threads[i].getId());
      }
    }
    
  2. 要为此脚本启用高级服务,请在菜单上找到Resources,然后选择Advanced Google services...

  3. 在列表中启用Gmail API

  4. 在选择OK之前,请点击Google Developers Console链接。搜索gmail,并在那里启用该服务。

  5. 完成后,选择OK;该功能现在应该工作。 (评论:如the link @karan provided中所述,可以将"me"用于userID,或者提供一个Gmail地址:"<address>@gmail.com"。)

  6. (为我的脚本启用高级服务的步骤基于Google的指南here。)

答案 2 :(得分:3)

如果它对某人有帮助,可以使用高级服务来完成。

https://developers.google.com/gmail/api/v1/reference/users/messages/delete

高级服务中的方法是

l = [...] for i in range(len(l)): for j in range(i + 1, len(l)): print l[i], l[j]

答案 3 :(得分:2)

此脚本适用于Google Apps脚本。您必须一起连接和授权服务。

function myFunction() {

  var labelName = "deleteForever"

  var threads = GmailApp.search("in:trash label:" + labelName);
  for (var i = 0; i < threads.length; i++) { 
    Gmail.Users.Messages.remove('me', threads[i].getId());
  }
}

答案 4 :(得分:0)

试试这个

function delete_all_mail(){
var myspreadsheet = SpreadsheetApp.openById('1AG1fZ9BuS8***********');
var mysheet = myspreadsheet.getSheets()[0];
//0~500
var threads = GmailApp.getInboxThreads(0 , 500);
  for(var i = 0; i < threads.length; i++)
  {
   threads[i].moveToTrash();
  }
}