带有Java的Google Calendar API - 仅为默认日历获取事件,忽略假期

时间:2011-12-09 21:54:30

标签: java default google-calendar-api

我要做的是只获取默认日历中所有事件的列表?我不希望包括任何其他日历活动,即假期。

我正在使用“... / feeds / username / default / full”并对从1个月前到永久的所有事件进行查询。我有两个我创建的事件但是我得到一个有25个条目的提要。我的两个活动首先是23个假期。我真的不把它们包括在内但是如果它们必须在那里,我该如何检测它们。我唯一能找到的是我的两个活动的eTag与假日活动不同。但我不能只说从我遇到的第一个Etag中获取所有事件,因为默认日历可能没有任何事件,所以第一个就是假期。

任何帮助都将不胜感激。

2 个答案:

答案 0 :(得分:1)

使用最新版本的Google Calendar API可以使用几行代码完成此操作。您需要做的就是拉出主日历的事件,如下所示:

http://code.google.com/apis/calendar/v3/using.html#retrieving_events

您需要的代码是:

Events events = service.events().list("primary").execute();

while (true) {
  for (Event event : events.getItems()) {
    System.out.println(event.getSummary());
  }
  String pageToken = events.getNextPageToken();
  if (pageToken != null && !pageToken.isEmpty()) {
    events = service.events().list("primary").setPageToken(pageToken).execute();
  } else {
    break;
  }
}

答案 1 :(得分:0)

我想知道你使用的是什么版本的Calendar API?在第3节,我可以在没有度假的情况下完成所有活动。我添加了一些代码示例,因为通过Oauth2 for Java连接到Calendar V3 API的Google文档不正确。

使用其他帖子中列出的代码循环设置Oauth并初始化日历后的日历事件。您可能可以,但不需要声明事件API。我只是从日历服务(3)中调用它。请注意,我列出的日历ID是“主要”。

Calendar service3 = new Calendar(transport, jsonFactory, accessProtectedResource);

com.google.api.services.calendar.model.Calendar calendar = service3.calendars().get("primary").execute();
com.google.api.services.calendar.model.Events events = service3.events().list("primary").execute();