代码之家  ›  专栏  ›  技术社区  ›  BeWarned

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

  •  0
  • BeWarned  · 技术社区  · 14 年前

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

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

    示例代码将不胜感激。

    2 回复  |  直到 14 年前
        1
  •  1
  •   Dónal    14 年前

    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);
    

    你可以做一点切槽机,比如:

    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);
    
        2
  •  1
  •   sbglasius    14 年前

    如果不需要更改日历,则只需获取日历的私有提要URL,并且可以使用类似的内容(取自 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
    

    快乐黑客。

    推荐文章