2013-08-18 27 views
0

我正在嘗試爲Google日曆使用.net客戶端庫。我可以獲取日曆列表並獲取日曆上的事件列表。但是,每個日曆最多可獲得250個項目。我如何訪問其餘的?我知道Google.Apis.Calendar.v3.EventsResource.ListRequest中的'pagetoken',但是在下面的代碼示例中,itemlistreq.PageToken保留爲null,即使對於包含超過250個項目的日曆。如何使用.net客戶端庫獲取超過250個日曆項目?

var auth = new OAuth2Authenticator<NativeApplicationClient>(provider, GetAuthorization); 

var initializer = new BaseClientService.Initializer(); 
initializer.Authenticator = auth; 

var calsrv = new CalendarService(initializer); 

//Get list of calendars 
var list = calsrv.CalendarList.List().Execute().Items; 

//Get entry list for each calendar 
foreach(var cal in list) 
{ 
    var itemlistreq = calsrv.Events.List(cal.Id); 
    var itemlistex = itemlistreq.Execute(); 
    var itemlist = itemlistex.Items; 

    //Here, itemlistreq.PageToken == null, even if itemlist has 250 entries. 
} 

回答

1

您是否嘗試更改請求上的MaxResult屬性? 例如,嘗試執行以下操作:

var itemlistreq = calsrv.Events.List(cal.Id); 
itemlistreq.MaxResults = 10000; 
var itemlistex = itemlistreq.Execute(); 
var itemlist = itemlistex.Items; 

更新: 嘗試獲得從活動類的NextPageToekn屬性(itemlistex你的情況)

var itemlistreq = calsrv.Events.List(cal.Id); 
var itemlistex = itemlistreq.Execute(); 
var token = itemlistex.NextPageToken; // THAT IS THE TOKEN YOU ARE LOOKING FOR 
var itemlist = itemlistex.Items; 

然後你就可以將其設置在itemlistex。 PageToken屬性獲得更多活動...

+0

是的,我做了一個lready。如果MaxResults大於250,則結果數量將保持250,如果結果數量<250,則結果數量確實限於您作爲MaxResults傳遞的數量。 PageToken沒有影響,在兩種情況下都保持爲空。 – Legolas

+0

我已經更新了答案,並添加了itemlistex.NextPageToken調用。讓我知道它是否有幫助。 – peleyal

0

MaxResult限制爲2500項,所以10000不會工作

+0

你能提供一個供參考的鏈接來確認嗎? –

+0

您可以在這裏[Google Developer](https://developers.google.com/google-apps/calendar/v3/reference/events/list)找到API,相關方法是maxResults,並且您可以看到它是有限的到2500 – Orit

+0

如果你想得到更多的,你可以迭代頁面,這是處理它的最好方法。 – Orit

相關問題