#java #google-calendar-api
Вопрос:
Я сейчас работаю с API Google Календаря, и у меня есть проблема, которую я много искал, чтобы решить, и я не нашел решения, поэтому я уверен, что некоторые из вас могут мне в этом помочь.
Я хочу получить идентификатор календаря Google, указав название календаря (Краткое описание)!
Я попытался получить идентификатор события, указав имя события, выполнив этот метод
public static String getEventId(String title) throws GeneralSecurityException, IOException {
DateTime now = new DateTime(System.currentTimeMillis());
HTTP_TRANSPORT = GoogleNetHttpTransport.newTrustedTransport();
Calendar service = new Calendar.Builder(HTTP_TRANSPORT, JSON_FACTORY, getCredentials(HTTP_TRANSPORT))
.setApplicationName("applicationName").build();
Events events = service.events().list("primary").setTimeMin(now).setSingleEvents(true)
.execute();
List<Event> items = events.getItems();
String id = null;
for (int i = 0; i < items.size(); i ) {
if (items.get(i).getSummary().toLowerCase().equals(title.toLowerCase())) {
id = items.get(i).getId();
}
}
return id;
}
Ваша помощь будет очень полезна
Большое спасибо
Ответ №1:
Поскольку для того, чтобы перечислить события, вам нужен идентификатор календаря, я не уверен, как, по вашему мнению, перечисление событий поможет вам найти идентификатор календаря.
На самом деле нет возможности перечислить все календари, к которым у пользователя есть доступ. Лучший способ найти идентификатор календаря-это перейти на веб-сайт календаря Google, где вы найдете идентификатор календаря.
Другой вариант-использовать метод Calendarlist.list, в котором будут перечислены все календари, добавленные пользователем в свой список календарей, который находится в нижней левой части веб-сайта Google calendar. Список календарей не является точным представлением всех календарей, имеющихся у пользователя, но он близок. Вы можете сделать это, как только у вас появится список всех календарей в списке календарей, вы сможете затем выполнить поиск по ним локально.
Комментарии:
1. Вот почему мне нужно получить идентификатор календаря, указав имя Календаря ! Приведенный выше код предназначен для отображения идентификатора события в главном календаре, указав название события. Но теперь, согласно вашему комментарию, я могу получить идентификатор календаря, указав его имя, например. Спасибо
Ответ №2:
Я исправил, и теперь я могу получить EventID, указав название календаря и название события, которое создается в этом одном!
вот метод getCalendarId :
public static String getCalendarId(String calendarName) throws GeneralSecurityException, IOException {
String calendarID = "There is no like this calendar";
HTTP_TRANSPORT = GoogleNetHttpTransport.newTrustedTransport();
Calendar service = new Calendar.Builder(HTTP_TRANSPORT, JSON_FACTORY, getCredentials(HTTP_TRANSPORT))
.setApplicationName("applicationName").build();
com.google.api.services.calendar.model.CalendarList calendarList = service.calendarList().list().execute();
List<CalendarListEntry> items = calendarList.getItems();
for (int i = 0; i < items.size(); i ) {
if (items.get(i).getSummary().toLowerCase().equals(calendarName.toLowerCase())) {
calendarID = items.get(i).getId();
}
}
return calendarID;
}
вот метод getEventID :
public static String getEventId(String calendarName, String eventName) throws GeneralSecurityException, IOException {
DateTime now = new DateTime(System.currentTimeMillis());
HTTP_TRANSPORT = GoogleNetHttpTransport.newTrustedTransport();
Calendar service = new Calendar.Builder(HTTP_TRANSPORT, JSON_FACTORY, getCredentials(HTTP_TRANSPORT))
.setApplicationName("applicationName").build();
Events events = service.events().list(getCalendarId(calendarName)).setTimeMin(now).setSingleEvents(true)
.execute();
List<Event> items = events.getItems();
String id = null;
for (int i = 0; i < items.size(); i ) {
if (items.get(i).getSummary().toLowerCase().equals(eventName.toLowerCase())) {
id = items.get(i).getId();
}
}
return id;
}
основной метод :
public static void main(String[] args) throws GeneralSecurityException, IOException {
/**
* Getting the Event ID of John Birthday which is in the Family calendar
*/
String calendarName = "Family";
String eventName = "John Birthday";
System.out.println(getEventId(calendarName, eventName));
}