Как я могу редактировать вторичный календарь, используя Google Python API - PullRequest
2 голосов
/ 26 января 2011

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

Ответы [ 2 ]

1 голос
/ 25 октября 2011

Я отвечаю на свой вопрос, чтобы наконец-то принять его.Проблема была решена некоторое время назад.

Самый важный ответ в этой документации .

Каждый запрос может быть выполнен с аргументом uri.Например, «InsertEvent (event, uri)».Uri может быть установлен вручную (из настроек календаря Google) или автоматически, как написано в посте ниже.Обратите внимание, что CalendarEventQuery принимает только имя пользователя, а не весь URL-адрес.

Конструкция обоих типов выполняется следующим образом:

user = "abcd1234@group.calendar.google.com"

uri = "http://www.google.com/calendar/feeds/{{ user}} / private / full-noattendees"

Что полезно, так это то, что вы можете запускать запросы с разными uri и добавлять / удалять события для множества разных календарей в одном скрипте.

Надеюсь, кто-то найдет это полезным.

0 голосов
/ 04 февраля 2011

У меня возникла та же проблема, но я нашел это решение (я не помню, где)возможно, не лучший, но рабочий

Примечание: код извлекается из реального проекта [некоторая часть была удалена] и должен быть адаптирован к вашему конкретному случаю и предоставлен в качестве примера только дляподдержка объяснения (это не будет работать как есть)

# 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 для работы со вторичным календарем.требуется, потому что функция API Google выполняет внутреннее преобразование специальных символов, таких как '%'

. Надеюсь, это поможет вам.

...