【问题标题】:Sorting Gmail threads by date按日期对 Gmail 线程进行排序
【发布时间】:2017-11-21 23:22:55
【问题描述】:

我希望有人可以提出一种按日期对 Gmail 线程进行排序的好方法,而无需获取可能有数千个线程的详细信息。

现在我使用threads.list 来获取线程列表,并且我使用它们返回的任何顺序。这是大部分正确的,因为它以相反的时间顺序返回线程。除了时间顺序显然是由线程中的第一条消息而不是线程的最新消息确定的。

如果有人对几天前开始的主题有新的回复,这对在列表顶部获取新消息来说很好。我想把它放在列表的顶部,因为它是一条新消息。但是threads.list 让它根据第一条消息进行排序。

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

我可以使用threads.get 来获取线程的详细信息,并在此基础上进行更智能的排序。但用户可能有数千个线程,我不想对每个线程都进行此调用。

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

【问题讨论】:

  • 你检查过“users.messages”然后按他们的threadId组织吗?
  • @MiguelOrtiz 我有,但 users.messages 的排序不一致,所以虽然我可以按线程 ID 进行组织,但这对按日期排序没有帮助。

标签: swift google-api gmail gmail-api


【解决方案1】:

我不是开发人员,以前从未使用过 API,但我只是阅读了 API 文档,它似乎没有您想要的功能。

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

您想要的是按照每个帖子中的最新消息来组织主题。

我认为您可以使用users.messagesthreads.list 的组合。在 users.messages 中,您将拥有 ThreadID:

threadId string 消息所属线程的ID。

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

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

我不知道新消息是如何受标签或星号影响的,你必须找出来。

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

【讨论】:

  • 列出用户消息确实给出了线程 ID,但没有给出消息日期。除非您在每条消息上单独致电messages.get,否则您不会得到日期。这遇到了与我开始时相同的问题——可能需要数千次调用才能获得准确的排序。
  • 在线程:列表中使用“q”过滤怎么样,这样您就可以按日期过滤更新/更新:developers.google.com/gmail/api/v1/reference/users/threads/list,即:更新:2017/01/01 + is:unread I'我真的很好奇你的问题,希望你不要介意。
  • 我不确定我会如何使用它。我想按日期排序,而不是按日期过滤。
猜你喜欢
  • 2020-10-30
  • 2015-12-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-03
  • 2014-07-06
相关资源
最近更新 更多