如何使用Google Calendar API获取特定时间范围内的所有日历条目

时间:2010-06-11 20:50:21

标签: java groovy gdata-api google-calendar-api

我想查看特定日历的特定时间范围内的事件,但是在使用API​​时遇到问题,它是一个通用API,它让我想起了使用DOM。问题是它似乎很难处理,因为大部分信息都在通用基类中。

如何使用Groovy或Java获取日历的事件? 有没有人有使用curl传递凭证的例子?

示例代码将不胜感激。

2 个答案:

答案 0 :(得分:1)

如果您不需要更改日历,则只需要获取日历私人Feed网址,您就可以使用此类内容(取自http://eu.gr8conf.org/agenda页面)。它使用ICal4J library

def url = "http://www.google.com/calendar/ical/_SOME_URL_/basic.ics".toURL()
def cal = Calendars.load(url)

def result = cal.components.sort { it.startDate.date }.collect {
  def e = new Expando()
  e.startDate = it.startDate.date
  e.endDate = it.endDate.date
  e.title = it.summary.value
  if (it.location) {
    e.presentation = Presentation.findByName(it.location.value, [fetch:"join"])
  }

  e.toString = {
    "$startDate: $title"
  }

  return e
}

result

快乐的黑客攻击。

答案 1 :(得分:1)

This document包含大多数常见用例的示例。例如,这是用于检索特定时间范围的事件的代码

URL feedUrl = new URL("http://www.google.com/calendar/feeds/default/private/full");

CalendarQuery myQuery = new CalendarQuery(feedUrl);
myQuery.setMinimumStartTime(DateTime.parseDateTime("2006-03-16T00:00:00"));
myQuery.setMaximumStartTime(DateTime.parseDateTime("2006-03-24T23:59:59"));

CalendarService myService = new CalendarService("exampleCo-exampleApp-1");
myService.setUserCredentials("jo@gmail.com", "mypassword");

// Send the request and receive the response:
CalendarEventFeed resultFeed = myService.query(myQuery, Feed.class);

你可以使用类似:

之类的东西来使它有点像Groovier
def myQuery = new CalendarQuery("http://www.google.com/calendar/feeds/default/private/full".toURL()).with {
  minimumStartTime = DateTime.parseDateTime("2006-03-16T00:00:00");
  maximumStartTime = DateTime.parseDateTime("2006-03-24T23:59:59");
  it
}

def myService = new CalendarService("exampleCo-exampleApp-1");
myService.setUserCredentials("jo@gmail.com", "mypassword");

// Send the request and receive the response:
def resultFeed = myService.query(myQuery, Feed);