【问题标题】:Efficiently getting read status gmail api有效地获取阅读状态gmail api
【发布时间】:2014-11-07 18:32:12
【问题描述】:

在为某些搜索查询做消息列表后获取电子邮件“已读状态”的最有效方法是什么?

正如include extra field question for messages#list 中所述,Google's try api 中有字段选项,但它不会返回带有这些字段的结果。可能这是一个错误或 gmail 团队出于效率原因没有添加这些字段。

假设我们无法从messages#list api中获取任何额外的字段,包括标签,那么从messages#list api获取的消息列表的只读状态的最佳方法是什么?我想避免加载我们在使用 get api 中的“最小”时获得的读取状态以外的任何内容。

【问题讨论】:

  • 我正在寻找的功能类似于使用 IMAP#fetch 时的 fetchprofile "FLAGS",它允许我使用第一个搜索结果获取标签/读取状态,从而提高效率并减少 API 调用。
  • 不知道为什么对这个问题投反对票,似乎每个人在从基于 IMAP 的原始 gmail 搜索转移到更新的 gmail API 时都会遇到。

标签: gmail-api


【解决方案1】:

如果您只需要 message.id 和已读/未读状态,则无需调用 messages.get() 就可以做到这一点,这将是最有效的。只需进行两次 list() 调用,一次调用“is:unread”,另一次调用“is:read”,这将提供您需要的信息。

或者,如果您在执行 messages.list() 后需要的不仅仅是已读/未读状态,请将这些 message.ids 传递给 format=MINIMAL(或 METADATA 或诸如此类)的(批量)messages.get() 调用.您应该能够非常有效和快速地做到这一点。

【讨论】:

  • 谢谢埃里克。为此,我只需要 n 封(通常为 25 封)用于搜索查询及其阅读状态的最新电子邮件。
  • 对于 n=25,任何一种方式都应该可以工作并且非常快。我想随着 N 的增加,两个 message.lists() 肯定会更好地扩展(因为这些类型的标签查询直接在后端建立索引,所以即使对 N=1000 执行它也应该没问题)。
  • 谢谢。这就是我最终做的事情: 1. 使用查询获取 n 条消息。 2.用“is:read”获取n条消息,并从步骤1和步骤2的集合中构造n条具有读取状态的消息。
猜你喜欢
  • 2021-06-29
  • 2011-11-23
  • 2021-10-13
  • 1970-01-01
  • 2015-12-10
  • 2020-03-25
  • 2021-07-26
  • 1970-01-01
  • 2019-07-15
相关资源
最近更新 更多