使用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。