我正在尝试使用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。批处理不起作用,因为在您已遍历每个页面之前,无法知道必须进行多少次请求。 resultSizeEstimate属性非常不准确。
答案 0 :(得分:6)
Gmail API现在使用Labels.Get()方法为任何标签上的邮件和线程提供总计和未读计数。看到: https://developers.google.com/gmail/api/release-notes 和 https://developers.google.com/gmail/api/v1/reference/users/labels
如果要获取整个邮箱的消息和线程数(所有邮件),请使用新的gmail.users.geProfile()方法。您可以在API资源管理器中试用它: https://developers.google.com/gmail/api/v1/reference/users/getProfile