使用 google 脚本从线程中永久仅删除一封 Gmail 邮件
permanently delete only one gmail message from a thread using a google script
我想永久删除已在垃圾箱中的线程中的 Gmail 邮件。
我在那里合并了一些脚本,所以我可以延迟和跟踪电子邮件。它的工作原理是保存草稿,然后脚本将草稿复制到新电子邮件中,在指定时间发送并将原始草稿发送到垃圾箱。问题是垃圾箱里的草稿偶尔会被重新发送(我还没弄明白为什么)...
作为一种变通方法,我使用了最初在此处 post 编辑的以下代码: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());
}
}
这工作正常,直到不久前。如果草稿在包含超过 1 条消息的线程中,则只有草稿被删除...我现在在第 6 行收到一条错误消息:"Cannot call method "remove" of undefined"。
在此post中:,建议将第6行替换为
Gmail.Users.Threads.remove('me',threads[i].getId());
这不会出现任何错误,但如果草稿位于包含多条消息的线程中,则会删除整个线程而不是仅删除草稿...
那么,有没有办法只删除草稿?
我尝试在线程内调用草稿的消息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。在 "try this API" 部分它有效,但在我的实现中,我在第 2 行收到一个错误,上面写着(从西班牙语翻译过来,所以我不知道它是否准确):"a name (?) is missing behind (after?) operator "。"" 和如果我在单独的选项卡中复制函数,我可以保存它并显示相同的错误...
任何帮助将不胜感激...
此致,
我终于通过了一个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);
}
}
}
}
我想永久删除已在垃圾箱中的线程中的 Gmail 邮件。
我在那里合并了一些脚本,所以我可以延迟和跟踪电子邮件。它的工作原理是保存草稿,然后脚本将草稿复制到新电子邮件中,在指定时间发送并将原始草稿发送到垃圾箱。问题是垃圾箱里的草稿偶尔会被重新发送(我还没弄明白为什么)...
作为一种变通方法,我使用了最初在此处 post 编辑的以下代码: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());
}
}
这工作正常,直到不久前。如果草稿在包含超过 1 条消息的线程中,则只有草稿被删除...我现在在第 6 行收到一条错误消息:"Cannot call method "remove" of undefined"。
在此post中:
Gmail.Users.Threads.remove('me',threads[i].getId());
这不会出现任何错误,但如果草稿位于包含多条消息的线程中,则会删除整个线程而不是仅删除草稿...
那么,有没有办法只删除草稿?
我尝试在线程内调用草稿的消息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。在 "try this API" 部分它有效,但在我的实现中,我在第 2 行收到一个错误,上面写着(从西班牙语翻译过来,所以我不知道它是否准确):"a name (?) is missing behind (after?) operator "。"" 和如果我在单独的选项卡中复制函数,我可以保存它并显示相同的错误...
任何帮助将不胜感激...
此致,
我终于通过了一个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);
}
}
}
}