Google api GMail API:获取收件箱中最旧电子邮件的最快方式

Google api GMail API:获取收件箱中最旧电子邮件的最快方式,google-api,gmail,gmail-api,Google Api,Gmail,Gmail Api,我想获得GMail收件箱中最旧的电子邮件。如何使用最少数量的API调用实现这一点 一种方法是获取来自用户的电子邮件总数:getProfileAPI,然后使用User.messages:listAPI通过使用公式使用“pageToken”查询参数获取最后一页 pageToken=totalMessages/50 从“我的收件箱”的最后一页获取邮件列表,然后使用列表中最后一封邮件的mid获取最早的电子邮件 我只是想知道有没有更好的办法?我无法从文档中找到其他方法来实现这一点。任何将获取最旧电子邮件的

我想获得GMail收件箱中最旧的电子邮件。如何使用最少数量的API调用实现这一点

一种方法是获取来自
用户的电子邮件总数:getProfile
API,然后使用
User.messages:list
API通过使用公式使用“pageToken”查询参数获取最后一页

pageToken=totalMessages/50

从“我的收件箱”的最后一页获取邮件列表,然后使用列表中最后一封邮件的
mid
获取最早的电子邮件

我只是想知道有没有更好的办法?我无法从文档中找到其他方法来实现这一点。任何将获取最旧电子邮件的搜索筛选器?

都包含一个名为q的参数,可用于搜索

{token}

基本上,
before:2008/01/01
发送就像在gmail web应用程序中搜索一样,返回该日期之前的所有电子邮件

这里的诀窍是缩小搜索范围。Gmail于2004年发布。这让你有可能在2018年到2004年之间开始,把它一分为二

before:2011/01/01  (there were mails split it in half again) 
before:2007/01/01  (there were no mails must be between 11 and 7)
before:2009/01/01  (...)

这种搜索方法有一个术语,但我现在记不起来了。基本上你一直在把它除以二,然后找出结果应该在哪里。

谢谢你的回答。二进制搜索是您要查找的术语。我考虑使用q参数应用“before”或“older”搜索过滤器。奇怪的是,没有搜索过滤器按最早的邮件排序。但是通过使用您的算法,我可能需要进行大量API调用来查找最旧的电子邮件。我一直在寻找一种更快的方法。我想没有别的办法了。二进制搜索!就是这个。多年来,我一直希望有这样的能力,但由于缺乏分类能力,我感到你的痛苦。这是我所知道的唯一方法。顺便说一句,很少有谷歌API支持排序,他们希望开发人员在返回响应后自己在本地进行排序