2017-10-14 93 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'); 
相關問題