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

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

在我的情况下,我想立即删除我发送的所有电子邮件。 这是我从某人那里拿来的一些代码,只有不同的标签:

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]); } } 

无论如何这是正确的,任何人都可以帮助我吗?

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

 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; } } 

一旦代码工作,我将触发每分钟运行该函数。 这样我的Sent文件夹始终为空。

有什么建议吗?

就我而言,我正在使用它

  thread.moveToTrash(); 

(同意垃圾可能不是你所期望的……)

Doc google(en): https : //developers.google.com/apps-script/reference/gmail/gmail-thread#movetotrash

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

完整示例脚本(en): 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 。 如文档中所述:

立即永久删除指定的消息。 此操作无法撤消。

根据Gmail.Users.Messages.remove() ,我不确定这个,但我认为这是一个旧的实现,因为我环顾社区并找到了这个答案,将其作为永久删除电子邮件的片段/信息。 我会坚持当前的文档所说的内容。

希望这可以帮助。 祝你好运。 🙂

这将删除已发送文件夹中的所有会话。 注意:如果有人向您发送了一条消息并且您回复了该消息,那么该消息也会被删除,我认为传入的消息也会被删除。 这可能不是你想要的。

 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); }; } } 

尝试在我的“草稿”文件夹上,它摆脱了那些好。

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