我想永久删除垃圾箱中已有线程中的Gmail邮件。
我在那里合并了一些脚本,所以我可以延迟和跟踪电子邮件。它通过保存草稿起作用,然后脚本将草稿复制到新电子邮件中,在指定时间发送并将原始草稿发送到垃圾箱。问题在于,偶尔会发送垃圾中的草稿(我还没有找到原因)......
作为解决方法,我使用的是最初发布在此处的以下代码:delete forever emails 1:
function cleanUp() {
var threads = GmailApp.search("in:trash is:draft");
Logger.log(threads.length);
for (var i = 0; i < threads.length; i++) {
Logger.log(threads[i].getId());
Gmail.Users.Message.remove('me',threads[i].getId());
}
}
这个工作正常,直到不久前。如果草稿在一个包含多条消息的帖子中,则只删除了草稿...我现在在第6行显示错误:&#34;无法调用方法&#34;删除&#34;未定义&#34;。
在这篇文章中:delete forever emails 2,建议用
替换第6行Gmail.Users.Threads.remove('me',threads[i].getId());
这个dosn没有任何错误,但是如果草案在一个包含多条消息的线程中,那么整个线程将被删除而不仅仅是草稿......
那么,有没有办法只删除草稿?
我尝试在线程中调用草稿的消息ID并使用原始行6:
function cleanUp2() {
var threads = GmailApp.search("in:trash is:draft");
Logger.log(threads.length);
for (var i = 0; i < threads.length; i++) {
var messages = threads[i].getMessages();
Logger.log(messages.length);
for (var j = 0; j < messages.length; j++){
if (messages[j].isDraft()){
Logger.log('id msg: ' + messages[j].getId());
Gmail.Users.Message.remove('me',messages[j].getId());
}
}
}
}
但我得到同样的错误,现在在第10行......
我也尝试过使用这个功能:
function deleteMessage(userId, messageId) {
var request = gapi.client.gmail.users.messages.delete({
'userId': userId,
'id': messageId
});
request.execute(
function(resp) { });
}
您可以在google的开发者页面中找到:here。在&#34;尝试此API&#34;部分它的工作原理,但在我的实现中,我在第2行得到了一个错误(从西班牙语翻译,所以我不知道它是否准确):&#34;后面缺少一个名字(?)(之后) ?)运营商&#34;。&#34;&#34;如果我在一个单独的选项卡中复制该功能,我可以保存它并显示相同的错误...
任何帮助将不胜感激......
此致
答案 0 :(得分:0)
我终于通过http请求:
function cleanUp2() {
var threads = GmailApp.search("in:trash is:draft");
Logger.log(threads.length);
var userId = 'xxxxx@gmail.com';
var options = {
'method' : 'delete',
'muteHttpExceptions': true
};
for (var i = 0; i < threads.length; i++) {
var messages = threads[i].getMessages();
Logger.log(messages.length);
for (var j = 0; j < messages.length; j++){
if (messages[j].isDraft()){
Logger.log('id msg: ' + messages[j].getId());
var url = 'https://www.googleapis.com/gmail/v1/users/' + userId + '/messages/' + messages[j].getId();
var response = UrlFetchApp.fetch(url,options);
Logger.log(response);
}
}
}
}