如何通过 Google Apps 脚本删除行中的线程消息?

How to delete thread messages in row via Google Apps Script?

我尝试编写函数来删除 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] 是相同的

修改点:

  • 在您的脚本中,移至垃圾箱的电子邮件仍然可以使用 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());
}
  • 此脚本删除线程。因此,当您对此进行测试时,请使用示例线程测试脚本。请注意这一点。

参考文献: