Как изменить дополнительный календарь с помощью google python API


Интересно, можно ли создавать и удалять события с помощью Google API во вторичном календаре . Я хорошо знаю, как это сделать в основном календаре, поэтому я только спрашиваю, Как изменить calendar_service для чтения и записи в другой календарь.
Я пробовал войти в систему с помощью дополнительного календаря электронной почты, но это невозможно с BadAuthentication Error. URL был, конечно, правильным, потому что он был прочитан API.
Жду твоей помощи.

2 2

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 выполняет внутреннее преобразование специальных символов, таких как " % "

Я надеюсь, что это поможет вам.