如何使用.net客户端库获取超过250个日历项?

时间:2013-08-18 17:19:01

标签: c# google-calendar-api google-api-dotnet-client

我正在尝试将.net客户端库用于Google日历。我可以获取日历列表并获取日历上的事件列表。但是,每个日历最多可获得250个项目。我如何访问其余的?我知道Google.Apis.Calendar.v3.EventsResource.ListRequest中的'pagetoken',但是在下面的代码示例中,itemlistreq.PageToken仍然为null,即使对于超过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.
}

2 个答案:

答案 0 :(得分:1)

您是否尝试更改请求中的MaxResult属性? 例如,尝试执行以下操作:

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

更新: 尝试从Events类(在您的情况下为itemlistex)中获取NextPageToekn属性

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属性上设置它以获取更多事件......

答案 1 :(得分:0)

MaxResult限制为2500项,因此10000将无效