使用 Google 脚本永久删除我的电子邮件的脚本

Script to permenantly delete my emails with Google Script

Gmail.Users.Messages.remove(userId, id) 是如何工作的?邮件的ID是什么,永久删除邮件是正确的功能吗?

就我而言,我想立即删除所有已发送的电子邮件。这是我从某人那里获取的一些代码,只是标签不同:

function myFunction() {
  var threads = GmailApp.search("in:sent label:Inbox");
  var me = Session.getActiveUser().getEmail();
    for (var i = 0; i < threads.length; i++) {
      Gmail.Users.Messages.remove(me, threads[i]);
    }

}

这是否正确,有人可以帮助我吗?

编辑:我修改了我的代码,但它仍然无法正常工作,我仍然无法弄清楚如何使用函数删除,就是这样:

function myFunction() {
  
  var me = Session.getActiveUser().getEmail();
  var thread = Gmail.Users.Threads.list(me);
  for (var i = 0; i < 1000; i++) {
        Gmail.Users.Threads.remove(me, thread);
        thread = Gmail.Users.Threads.list(me).nextPageToken;
     
  }

}

代码运行后,我将每分钟触发一次 运行 函数。这样我的发件夹就一直是空的。

我这边用的是这个

 thread.moveToTrash();

(同意垃圾可能不是您所期望的..)

文档 google(英文):https://developers.google.com/apps-script/reference/gmail/gmail-thread#movetotrash

Post (fr) : http://curiositedevie.blogspot.be/2015/08/gmail-gestion-de-vos-emails-aux-petits.html?m=1

完整示例脚本(英文):https://github.com/boly38/script.google.com/blob/master/organizeEmail.gs


编辑:这是永久删除线程的解决方案

像下面的示例一样使用Gmail.Users.Threads.remove(mymail, thread.id);

如何使用示例:

  • 更新您的 gmail 地址(在第一次执行时,您将被要求提供相关授权)。
  • 我强烈建议第一次玩permanentlyRemoveMyLabel = false。在这种情况下,此示例将显示(并保留)带有 label:mytest
  • 的消息
  • 完成后,将 permanentlyRemoveMyLabel 设置为 true。在这种情况下,此示例将显示并永久删除 带有 label:mytest 的消息。

https://script.google.com/ 的示例:

function removeMyTest() {
  var mymail = "myemailhere@gmail.com";
  var mylabel = "mytest";
  var permanentlyRemoveMyLabel = false;
  var pageToken;
  do {
    var threadList = Gmail.Users.Threads.list('me', {
      q: 'label:' + mylabel,
      pageToken: pageToken
    });
    if (threadList.threads && threadList.threads.length > 0) {
      threadList.threads.forEach(function(thread) {
        Logger.log('id: %s snippet: %s', thread.id, thread.snippet);
        if (permanentlyRemoveMyLabel) {
          Gmail.Users.Threads.remove(mymail, thread.id);
          Logger.log('id: %s snippet: %s REMOVED', thread.id, thread.snippet);
        }
      });
    }
    pageToken = threadList.nextPageToken;
  } while (pageToken);
}

我在文档中做了一些挖掘。有了你想要的结果,我想你要找的就是User.messages.delete。如文档中所述:

Immediately and permanently deletes the specified message. This operation cannot be undone.

根据 Gmail.Users.Messages.remove(),我不确定这一点,但我认为它是一个旧的实现,因为我环顾社区并发现这个 answer 提供它作为片段用于永久删除 email/message。不过,我会坚持当前文档所说的内容。

这一直有效到 2017 年 2 月中旬。

我用它来清空我的垃圾

  `var threads = GmailApp.getTrashThreads(0, 100);
  for (var i = threads.length -1; i >=0; i--) {
        Logger.log("Removing thread " +i + ' of ' + threads.length + " from Trash");
    try {
    Gmail.Users.Messages.remove(me, threads[i].getId());
    } catch(err) {
    Logger.log("Error " + err.message);
    };
  }
  Logger.log("Finished removing " + threads.length + " threads from Trash.");`

它现在已停止工作并出现以下错误:

`17-02-25 02:10:53:510 PST] Removing thread 1 of 2 from Trash
[17-02-25 02:10:53:620 PST] Error Not Found
[17-02-25 02:10:53:621 PST] Removing thread 0 of 2 from Trash
[17-02-25 02:10:53:763 PST] Error Not Found
[17-02-25 02:10:53:764 PST] Finished removing 2 threads from Trash.`

最近功能好像有变化。

这将从已发送文件夹中删除所有对话。注意,如果有人给你发了一条消息而你回复了那将是同一对话的一部分,我认为收到的消息也会被删除。这可能不是你想要的。

function DeleteByLabel() {

  var label="sent"
  var threads = GmailApp.search("in:" +label);
  var me = Session.getActiveUser().getEmail();
  Logger.log("Found " + threads.length + " threads with label " + label);

  for (var i = threads.length -1; i >=0; i--) {
     var thisid=threads[i].getId();
     Logger.log("Removing thread " +i + ' of ' + threads.length + " from " + label + " with ID = " + thisid);

    try {
        Gmail.Users.Threads.remove(me, thisid);
    }
    catch(err) {
     Logger.log("Error " + err.message + " when removing thread with ID " +thisid);
    };
}

}

在我的 "Drafts" 文件夹中试过,它摆脱了那些,好的。

注意 运行 时,您必须启用相应的 Gmail API。

将其添加到 google 脚本中。

function Intialize() {
  return;
}

function Install() {
  ScriptApp.newTrigger("purgeGmail")
           .timeBased().everyMinutes(1).create();
}

function Uninstall() {
  var triggers = ScriptApp.getScriptTriggers();
  for (var i=0; i<triggers.length; i++) {
    ScriptApp.deleteTrigger(triggers[i]);
  }
}
function purgeGmail() {
  var search = "category:forums";
  var threads = GmailApp.search(search, 0, 500);
  GmailApp.moveThreadsToTrash(threads);
}