Как получить событие из календаря Google на Java?

#java

#java

Вопрос:

Я использую этот код для получения списка календарей Google:

 // Create a CalenderService and authenticate
CalendarService myService = new CalendarService("exampleCo-exampleApp-1");
myService.setUserCredentials("j...@gmail.com", "mypassword");

// Send the request and print the response
URL feedUrl = new URL("https://www.google.com/calendar/feeds/default/allcalendars/full");
CalendarFeed resultFeed = myService.getFeed(feedUrl, CalendarFeed.class);
System.out.println("Your calendars:");
System.out.println();
for (int i = 0; i < resultFeed.getEntries().size(); i  ) {
  CalendarEntry entry = resultFeed.getEntries().get(i);
  System.out.println("t"   entry.getTitle().getPlainText());
}
  

Этот код возвращает мне список календарей, но мне нужно получить все события из этого календаря на сегодняшний день. Как я могу это сделать?

Ответ №1:

Если вы используете пример программы для начала, пожалуйста, используйте ..../private/full для получения событий из календаря.

Например:

 "https://www.google.com/calendar/feeds/xxx@gmail.com/private/full");
  

Ответ №2:

Предполагая, что вы используете официальный GData API:

Попробуйте использовать getFeed(Query query, …) перегрузку с помощью a CalendarQuery -, которая, кажется, позволяет указать диапазон для времени начала события.

Ответ №3:

Вы также можете использовать этот URL-адрес по умолчанию вместо указания xxx@gmail.com,

 "https://www.google.com/calendar/feeds/default/private/full"
  

И я думаю, вам следует использовать CalendarEventFeed Object вместо CalendarFeed
Смотрите этот фрагмент кода ниже:

 CalendarQuery myQuery = new CalendarQuery(feedUrl);
myService.setUserCredentials(p.getgUser(), p.getgPassword());

 DateTime dt = new DateTime();
 myQuery.setMinimumStartTime(DateTime.now());
 myQuery.setMaximumStartTime(dt);

CalendarEventFeed resultFeed = myService.query(myQuery, CalendarEventFeed.class);
  

Затем просмотрите содержимое resultFeed

…..

 CalendarEventFeed resultFeed = calendarData

for (int i = 0; i<calendarData.getEntries().size(); i  ) {
          CalendarEventEntry entry = calendarData.getEntries().get(i);
  

…..