此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]);
}
}
这是否正确无误,有人可以帮助我吗?
编辑:我修改了我的代码,但它仍然无法正常工作,我仍然无法弄清楚如何使用函数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文件夹总是空的。
有什么建议吗?
答案 0 :(得分:0)
在我这边我正在使用这个
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);
,如下面的示例所示。
如何使用样本:
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);
}
答案 1 :(得分:0)
我已经在文档中做了一些挖掘。根据您想要的结果,我认为您正在寻找的是User.messages.delete。如文档中所述:
立即永久删除指定的邮件。此操作无法撤消。
根据Gmail.Users.Messages.remove()
,我对此并不确定,但我认为这是一个旧的实现,因为我浏览了社区并发现此answer将其作为片段提供永久删除电子邮件/消息。我坚持当前的文档所说的内容。
希望这会有所帮助。祝好运。 :)
答案 2 :(得分:0)
这将删除已发送文件夹中的所有会话。注意:如果有人向您发送了一条消息并且您回复了该消息,那么该消息也会被删除,我认为传入消息也会被删除。这可能不是你想要的。
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。
答案 3 :(得分:0)
将其添加到谷歌脚本中。
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);
}