2

背景 用户倾向于在 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 将消息分组到线程中?我对正在发生的事情是否正确?

4

3 回答 3

0

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

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

于 2013-01-23T20:55:36.397 回答
0

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

设置用户 ToArchive@YourDomain.com

遍历已删除的邮件检查消息 ID,而不是线程,针对已归档消息的索引(稍后将详细介绍索引)

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

遍历 ToArchive 中的消息,从 To: 解析消息 id 并添加到索引,然后标记为已读。

在 ToArchive 中归档已读消息

于 2013-01-23T21:02:33.817 回答
0

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

于 2013-01-23T16:35:26.580 回答