按日期排序Gmail邮件线程

3

我希望有人能够建议一种好的技术,能够按日期排序Gmail邮件线程,而无需获取潜在数千个邮件线程的详细信息。

现在,我使用threads.list获取一个邮件线程列表,并使用它们被返回的任何顺序。这在大多数情况下都是正确的,因为它以相反的时间顺序返回邮件线程。但是,好像是由线程中第一封电子邮件确定时间顺序,而不是线程中最近的电子邮件。

这对于将新邮件放在列表顶部来说是可以接受的,但如果某人回复了几天前开始的邮件线程,那么它并不理想。我想将其置于列表顶部,因为它是一条新消息。但是threads.list根据第一封消息对其进行排序。

我认为答案可能是根据historyId对邮件线程进行排序。这样可以按最近的消息排序。但它也会受到任何其他线程更改的影响。如果用户更新邮件标签(例如加星标),则historyId会更改。然后,即使不是新邮件,该邮件也会排在顶部。

我可以使用threads.get来获取线程的详细信息,并根据此进行更智能的排序。但用户可能有成千上万个线程,我不想为每个线程都进行这个调用。

有没有更好的方法?我错过了什么吗?


你有没有检查过“users.messages”,并按照它们的threadId进行组织? - Miguel Ortiz
@MiguelOrtiz 我已经尝试过了,但是 users.messages 并没有按照一致的顺序排序,所以虽然我可以通过线程 ID 进行组织,但这不能帮助我们按日期排序。 - Tom Harrington
1个回答

0

我不是开发人员,也从未使用过API,但我刚刚阅读了API文档,似乎没有你想要的功能。

无论如何,这是我在你的问题中理解的:

你想按每个线程中最新的消息来组织线程。

我认为你可以结合users.messagesthreads.list来实现。在users.messages中,你将拥有ThreadID:

threadId string 消息所属线程的ID。

该方法将使用用户消息的日期,从新到旧地组织最新的消息,然后通过threadId递归地获取它们的原始线程,并通过其最新接收的消息打印线程threads.list

使用此方法,您将避免在每个线程中进行递归,从而节省资源和时间。

我不知道标签或加星号会如何影响新消息,你需要找出来。

如果我的回答不正确或误导了您,我提前道歉。


列出用户消息可以提供线程ID,但不包括消息日期。除非您对每个消息单独调用messages.get,否则您无法获取日期。这会遇到我之前提到的同样问题——可能需要成千上万次调用才能获得准确的排序。 - Tom Harrington
关于在thread:list中使用“q”进行过滤,您可以按日期进行过滤,例如:https://developers.google.com/gmail/api/v1/reference/users/threads/list,即:newer: 2017/01/01 + is:unread。我对您的问题非常感兴趣,希望您不介意。 - Miguel Ortiz
我不确定我该如何使用它。我想按日期排序,而不是按日期过滤。 - Tom Harrington

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接