将消息(而不是线程)移动到存档

时间:2013-01-23 13:10:24

标签: google-apps-script

背景 用户倾向于按下Gmail中的“删除”按钮(或通过谷歌应用程序同步在Outlook中),但我们希望存档所有邮件(谷歌每隔30天清除一次垃圾邮件)。

到目前为止

解决方案 以下脚本每小时在触发器上运行,将垃圾箱中的任何线程移动到存档中。

function archiveTrash() {
var threads = GmailApp.getTrashThreads(0, 100);
for (var i = 0; i < threads.length; i++) {
threads[i].moveToArchive();
}
}

问题用户报告邮件正在从收件箱中消失。

可能的原因相信这就是发生的事情:用户正在处理消息的线程并删除线程中的一些消息(用户通常使用outlook,所以他们分别看到每条消息)。但是,线程中的其他消息仍保留在用户的收件箱中。然后getTrashThreads正在拾取包含至少一条已删除邮件的线程,并且脚本正在将整个线程移动到存档,包括收件箱中的邮件。

解决方案?这是我被困的地方。如何仅存档已删除的邮件,而不是整个帖子?有没有办法阻止gmail将消息分组到线程中?我对发生的事情是否正确?

3 个答案:

答案 0 :(得分:0)

Gmail仅支持在线程级别进行存档,而不支持在邮件级别进行存档,但它允许删除单个邮件。我认为您的用例不受支持。

答案 1 :(得分:0)

检查线程isInInbox()。如果不是,请归档该线程。如果是,请归档,然后moveToInbox()

编辑:我错过了你问题的最后一部分。我不知道存档特定邮件的方法,因此它们不会弹出Outlook收件箱。您可以在Gmail中关闭对话视图,但我不知道它对线程产生了什么影响。

答案 2 :(得分:0)

不是那么简单但可能的解决方案:

设置用户ToArchive@YourDomain.com

通过已删除的邮件检查邮件ID,而不是线程,对存档邮件的索引进行迭代(稍后将详细介绍索引)

将不在索引中的邮件转发到ToArcive+messageId@YourDomain.com(在@之前最多可以包含64个字符,所以应该没问题。)

迭代ToArchive中的消息解析来自To的消息ID:并添加到index然后标记为read。

在ToArchive中存档阅读邮件