17

我正在尝试制作一个脚本,该脚本可以立即永久地自动删除来自某个发件人的电子邮件,因为 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 完成任务,但一直找不到方法。

有谁知道我如何将这些电子邮件设置为在收到时永久删除自己?

4

5 回答 5

19

@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;该功能现在应该可以工作了。(评论:正如@karan 提供的链接中提到的那样,可以使用"me"用户ID,或者提供自己的Gmail 地址:"<address>@gmail.com"。)

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

于 2016-06-13T22:05:48.183 回答
13

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

于 2013-04-14T04:46:02.927 回答
7

此脚本适用于 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());
  }
}
于 2016-11-13T11:21:04.330 回答
3

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

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

高级服务中的方法是

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

于 2015-12-24T13:25:16.030 回答
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();
  }
}
于 2018-05-04T17:27:57.627 回答