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

Spe*_*ner 12 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
    }
};
Run Code Online (Sandbox Code Playgroud)

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

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

Jon*_* Y. 14

@ 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());
      }
    }
    
    Run Code Online (Sandbox Code Playgroud)
  2. 要为此脚本启用高级服务,请Resources在菜单上找到,然后选择Advanced Google services...

  3. Gmail API在列表中启用.

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

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

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

  • 我还建议更改为 **threads** `Gmail.Users.Threads.remove`。`GmailApp.search` 返回每个[链接](https://developers.google.com/apps-script/reference/gmail/gmail-app#search(String)) 的线程数组。在这种情况下,我相信正在删除线程而不是消息。就我而言,在意识到我将线程 ID 传递给“Gmail.Users.Messages.remove”之前,我收到以下错误(“对 gmail.users.messages.delete 的 API 调用失败,错误:未找到”)功能。 (2认同)

Cor*_*y G 13

根据设计,使用GmailApp永久删除电子邮件是不可能的.

  • 一旦这是正确答案,但由于我们拥有高级服务,因此可以删除电子邮件. (5认同)

小智 9

该脚本适用于 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());
  }
}
Run Code Online (Sandbox Code Playgroud)


Kar*_*ran 5

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

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

高级服务中的方法是

Gmail.Users.Messages.remove(userId, id)