Как получить идентификатор календаря Google с помощью Google API с помощью Java

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

}