【问题标题】:How do I get more than 250 calendar items using the .net client library?如何使用 .net 客户端库获取超过 250 个日历项目?
【发布时间】:2013-08-20 12:52:19
【问题描述】:

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

【问题讨论】:

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


    【解决方案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 属性上设置它来获取更多事件...

    【讨论】:

    • 是的,我已经这样做了。如果 MaxResults >250,则结果数量保持 250,如果
    • 我已经更新了答案,并添加了 itemlistex.NextPageToken 调用。如果有帮助,请告诉我。
    【解决方案2】:

    MaxResult 限制为 2500 个项目,因此 10000 个将不起作用

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多