2017-10-14 61 views
2

我使用Gmail API获取用户电子邮件并在图表上显示一个月内的电子邮件数量。但是循环浏览每封电子邮件来计算电子邮件效率并不高。有没有其他办法可以取得这个数字?例如9月份发送或接收了多少封电子邮件?如何在Gmail API中获取特定月份中的电子邮件数

当然,我们可以使用after:或before:filters,但是如果我必须获取整年的计数,那么将需要12个API调用。如果有任何其他方式可以在1次通话中计数?或者其他有效的方法?谢谢。

回答

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 AMSunday, October 1, 2017 12:00:00 AM,你会这样称呼它:

$count = getMessageCount($service, 'me', 'after:1504224000 before:1506816000'); 
相关问题