Как изменить дополнительный календарь с помощью google python API
Интересно, можно ли создавать и удалять события с помощью Google API во вторичном календаре . Я хорошо знаю, как это сделать в основном календаре, поэтому я только спрашиваю, Как изменить calendar_service для чтения и записи в другой календарь.
Я пробовал войти в систему с помощью дополнительного календаря электронной почты, но это невозможно с BadAuthentication Error
. URL был, конечно, правильным, потому что он был прочитан API.
Жду твоей помощи.
2 ответа:
Я отвечаю на свой собственный вопрос, чтобы наконец принять этот. Проблема была решена некоторое время назад.
Самый важный ответ содержится в этой документации .Каждый запрос можно выполнить с uri в качестве аргумента. Например, " InsertEvent (event, uri)". Uri можно установить вручную (из настроек календаря google) или автоматически, как написано в посте ниже. Обратите внимание, что CalendarEventQuery принимает только имя пользователя, а не весь url.
Конструкция обоих идет следующим образом Способ:
Пользователь = "abcd1234@group.calendar.google.com"
Ури = "http://www.google.com/calendar/feeds/{{ пользователь }}/частная/полное noattendees"
Полезно то, что вы можете запускать запросы с разными uri и добавлять/удалять события во многие различные календари в одном скрипте.
Надеюсь, кто-то найдет это полезным.
Я получил тот же вопрос, но я нашел это решение (я не помню, где)
Это решение заключается в извлечении вторичного пользователя календаря из его src url, предоставленного google
Это, вероятно, не лучший вариант, но он работает
Примечание: код извлекается из реального проекта [некоторая часть была удалена] и должен быть адаптирован к вашему конкретному случаю и предоставляется в качестве примера только для того, чтобы иметь поддержку для объяснения (он не будет работать как есть)
# 1 - Connect using the main user email address in a classical way cal_client = gdata.calendar.service.CalendarService() # insert here after connection stuff # 2 - For each existing calendars feed = cal_client.GetAllCalendarsFeed(): # a loop the find the calendar by it's title (cal_title) for a_calendar in feed.entry: if cal_title in a_calendar.title.text: cal_user = a_calendar.content.src.split('/')[5].replace('%40','@') # If you print a_calendar.content.src.split you will see that the url # contains an email like definition. This is the one to used to work # with the calendar
Тогда вам просто нужно заменить пользователя по умолчанию на cal_user в api, чтобы работать с дополнительным календарем.
Вызов Replace необходим, потому что функция google api выполняет внутреннее преобразование специальных символов, таких как " % "
Я надеюсь, что это поможет вам.