【问题标题】:How to delete thread messages in row via Google Apps Script?如何通过 Google Apps 脚本连续删除线程消息?
【发布时间】:2021-10-02 22:11:47
【问题描述】:

我尝试编写函数,该函数将删除 Gmail 线程中包含多条消息的消息。

function movetotrash()
{
 var thread = GmailApp.getInboxThreads(0,1)[0]; // Get first thread in inbox
  if (thread==null)
  {}  
  else
  {
   
    var message = thread.getMessages()[0]; // Get the latest message   
  
   Logger.log('zero'+thread.getMessages()[0].getPlainBody());
    message.moveToTrash()
  }
}

我可以看到该消息在 gmail 界面中消失了。 但是当我再次调用这个函数时,我可以看到消息 [0] 是一样的

【问题讨论】:

  • 如果你真的想删除它们,为什么不使用 Gmail Rest API

标签: google-apps-script gmail


【解决方案1】:

修改点:

  • 在您的脚本中,移动到垃圾箱的电子邮件仍然可以使用var message = thread.getMessages()[0] 检索。这样,在您运行脚本后,您可以使用var message = thread.getMessages()[0] 检索相同的消息。我认为这可能是您的问题的原因。
  • 如果要使用moveToTrash(),请检查邮件是否在垃圾箱中?在这种情况下,您可以使用isInTrash()

当以上几点反映在你的脚本中,就变成了如下。

修改脚本:

发件人:

var message = thread.getMessages()[0]; // Get the latest message

ogger.log('zero'+thread.getMessages()[0].getPlainBody());
message.moveToTrash()

收件人:

var messages = thread.getMessages();
for (var i = 0; i < messages.length; i++) {
  if (messages[i].isInTrash()) continue;
  Logger.log(messages[i].getPlainBody());
  messages[i].moveToTrash();
  break;
}
  • 通过此修改,消息在每次运行时都会被移至垃圾箱。

示例脚本:

从你How to delete thread messages in row via Google Apps Script?的标题中,如果你想删除线程的所有消息,你也可以使用下面的脚本。

在使用此脚本之前,please enable Gmail API at Advanced Google services

var thread = GmailApp.getInboxThreads(0, 1)[0]; // Get first thread in inbox
if (thread) {
  Gmail.Users.Threads.remove("me", thread.getId());
}
  • 此脚本删除线程。因此,当您对此进行测试时,请使用示例线程测试脚本。请注意这一点。

参考资料:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-10-31
    • 1970-01-01
    • 2016-12-16
    • 1970-01-01
    • 2021-04-03
    • 1970-01-01
    • 2021-11-17
    相关资源
    最近更新 更多