如何在Gmail API中获取特定月份中的电子邮件数
问题描述:
我使用Gmail API获取用户电子邮件并在图表上显示一个月内的电子邮件数量。但是循环浏览每封电子邮件来计算电子邮件效率并不高。有没有其他办法可以取得这个数字?例如9月份发送或接收了多少封电子邮件?如何在Gmail API中获取特定月份中的电子邮件数
当然,我们可以使用after:或before:filters,但是如果我必须获取整年的计数,那么将需要12个API调用。如果有任何其他方式可以在1次通话中计数?或者其他有效的方法?谢谢。
答
我认为你唯一的选择是列出的信息与查询after:<start_date> before:<end_date>
直到有在响应没有nextPageToken
,然后坐总数:
function getMessageCount($service, $userId, $query) {
$pageToken = NULL;
$messages = array();
$opt_param = array(
'q' => $query
);
do {
try {
if ($pageToken) {
$opt_param['pageToken'] = $pageToken;
}
$messagesResponse = $service->users_messages->listUsersMessages($userId, $opt_param);
if ($messagesResponse->getMessages()) {
$messages = array_merge($messages, $messagesResponse->getMessages());
$pageToken = $messagesResponse->getNextPageToken();
}
} catch (Exception $e) {
print 'An error occurred: ' . $e->getMessage();
}
} while ($pageToken);
return count($messages);
}
如果你想获得信息的数量在例如Friday, September 1, 2017 12:00:00 AM
和Sunday, October 1, 2017 12:00:00 AM
,你会这样称呼它:
$count = getMessageCount($service, 'me', 'after:1504224000 before:1506816000');