使用gmail.metadata时,如何按日期范围限制

When using gmail.metadata, how to limit by date range

我过去常常通过访问完整的电子邮件并使用 payload/headers 选项来获取数据,但后来发现了 gmail.metadata。但是我刚刚注意到这使我们无法使用“q”参数让我们按日期过滤。我的计划是从 T=0 开始进行第一次同步,随后的同步使用“高水位线”。我以前工作的水印代码现在 returns Metadata scope does not support 'q' parameter status_code: 403.

有谁知道使用 GMail 元数据 API 而不必每次都获取 所有 封电子邮件的方法?

答案:

如果您使用元数据范围,则无法过滤仅从查询中获得的结果。

更多信息:

根据 users.messages: list 上的文档(强调我自己的):

q: string

Only return messages matching the specified query. Supports the same query format as the Gmail search box. For example, "from:someuser@example.com rfc822msgid:<somemsgid@example.com> is:unread". Parameter cannot be used when accessing the api using the gmail.metadata scope.

并从“选择授权范围”页面:

https://www.googleapis.com/auth/gmail.metadata

Read resources metadata including labels, history records, and email message headers, but not the message body or attachments.

这是设计使然。 q 参数允许在受元数据范围限制的字段内搜索消息 - 包括消息正文和附件。因此,在使用元数据范围时无法过滤结果。

功能请求:

然而,另一方面,Google 已经知道了这一点,并且已经在他们的问题跟踪器上提出了对此的功能请求。您可以查看此功能请求here,您可以点击左上角的星号(☆)让Google知道更多人希望实现此功能。

参考文献:

相关Questions/Answers:

  • 查看 Eric D、Gmail 工程师
  • 的回答和评论