google-apps-script - 如何通过 Google Apps 脚本连续删除线程消息?
问题描述
我尝试编写函数来删除 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?
,如果您想删除该线程的所有消息,您还可以使用以下脚本。
在使用此脚本之前,请在 Advanced Google services 中启用 Gmail API。
var thread = GmailApp.getInboxThreads(0, 1)[0]; // Get first thread in inbox
if (thread) {
Gmail.Users.Threads.remove("me", thread.getId());
}
- 此脚本删除线程。因此,当您对此进行测试时,请使用示例线程测试脚本。请注意这一点。
参考:
推荐阅读
- javascript - 尝试从帮助程序导入 HTML,但 Rails 不喜欢它
- ffmpeg - ffmpeg 将 HDR 转换为 SDR
- image - 如何在颤动的图像上添加交互式图钉?
- javascript - 发送输入值并单击提交按钮外部 url php
- javascript - 反应类型错误:_this.props。...未定义
- svn - svn 合并错误“必须与祖先相关”,即使文件先前已合并
- android - Android应用程序中字符串的大小有限制吗?
- spring - Spring Social:OAuthException:响应正文不正确。无法从中提取令牌
- excel-formula - Excel-从数组中减去一个数字并将每个单元格的绝对值相加
- mysql - Brew MySQL 8.0.12 版 Sequel Pro 连接失败