使用Google脚本

时间:2017-03-21 15:04:17

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

我想永久删除垃圾箱中已有线程中的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;如果我在一个单独的选项卡中复制该功能,我可以保存它并显示相同的错误...

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

此致

1 个答案:

答案 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);            
      }    
    }
  }
}