【发布时间】:2019-10-26 05:57:53
【问题描述】:
我正在尝试使用 Gmail API 获取用户邮箱中所有电子邮件的计数。这意味着运行类似
do{
page = request.execute();
if (page.getMessages() != null){
totalSize += page.getMessages().size();
}
request.setPageToken(page.getNextPageToken());
}while (request.getPageToken() != null && request.getPageToken().length() > 0);
问题在于,对于大型邮箱,这可能是一个漫长的过程,需要进行许多 API 调用。例如,一个包含 31,000 封电子邮件的邮箱需要一分钟多的时间才能运行,并且需要 300 多次迭代才能完成。
有没有更好的办法?
我尝试过使用 maxResults 参数,但它默认为 100 并忽略任何大于 100 的值。批处理不起作用,因为在您已经遍历每个页面之前,无法知道您必须发出多少请求。而且 List 响应中的 resultSizeEstimate 属性非常不准确。
【问题讨论】:
-
由于当前版本的 Gmail API 是第 1 版,因此它们没有提供太多灵活的功能。可能在以后的版本中包含此功能。
-
查看我的评论。现在提供标签和整个邮箱的计数。
标签: gmail-api