2014-08-29 82 views
4

我試圖使用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屬性荒謬不準確。

+1

由於當前版本的Gmail API是版本1,因此它們不提供太多靈活的功能。可能在後期版本中包含此功能。 – 2014-09-05 07:04:35

+1

看到我的評論。現在提供標籤和整個郵箱上的計數。 – 2014-10-16 16:22:25

回答

4

Gmail API現在使用Labels.Get()方法爲任何標籤上的消息和線程提供總計和未讀計數。請參閱: https://developers.google.com/gmail/api/release-noteshttps://developers.google.com/gmail/api/v1/reference/users/labels

如果你想獲得對整個郵箱(所有郵件)消息和線程數,然後使用新的gmail.users.geProfile()方法。您可以在API瀏覽器中試用它: https://developers.google.com/gmail/api/v1/reference/users/getProfile

相關問題