【问题标题】:permanently delete only one gmail message from a thread using a google script使用 google 脚本从线程中永久删除仅一条 gmail 消息
【发布时间】:2023-04-10 05:02:01
【问题描述】:

我想永久删除已在垃圾箱中的线程中的 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());
  }
}

这一直很好,直到不久前。如果草稿在包含超过 1 条消息的线程中,则只有草稿被删除...我现在在第 6 行收到一条错误消息:“无法调用未定义的“删除”方法”。

在本帖:delete forever emails 2,建议将第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) { });
}

你可以在谷歌的开发者页面找到:here。在“尝试这个 API”部分它可以工作,但在我的实现中,我在第 2 行收到一个错误,上面写着(从西班牙语翻译,所以我不知道它是否准确):“后面缺少一个名称(?) (之后?)运算符“。”“如果我将函数复制到单独的选项卡中,我可以保存它并显示相同的错误......

任何帮助将不胜感激...

问候,

【问题讨论】:

    标签: google-apps-script gmail gmail-api


    【解决方案1】:

    我终于通过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);            
          }    
        }
      }
    }
    

    【讨论】:

      猜你喜欢
      • 2020-01-23
      • 2014-04-14
      • 1970-01-01
      • 2016-07-22
      • 2020-01-06
      • 2013-05-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多