Google Calendar API V3: определение отредактированных одноразовых повторяющихся событий? - PullRequest
1 голос
/ 16 апреля 2020

В настоящее время я перечисляю все события из Календаря Google, используя для параметра «singleEvents» значение true, которое разделяет повторяющиеся события на отдельные события - и это хорошо. Однако я сталкиваюсь с проблемой, когда экземпляр повторяющегося события редактируется, и изменения сохраняются с помощью параметра «Только это событие» в пользовательском интерфейсе календаря.

Что мне нужно сделать, так это уметь определить, какие из этих повторяющихся экземпляров событий были отредактированы, а какие - нет. Похоже, что данные ответа API не дают никаких признаков того, является ли это экземпляром неотредактированного повторяющегося события или отредактированным одноразовым. Ответ для неотредактированного экземпляра повторяющегося события и отредактированного экземпляра более или менее одинаков, за исключением поля описания, которое было отредактировано.

Причина, по которой мне нужно различать отредактированные и неотредактированные экземпляры повторяющихся событий является то, что я динамически создаю страницы сведений о событиях из списка отдельных событий. Я хотел бы, чтобы одна страница предназначалась для самого повторяющегося события, а другая - для одноразового повторения этого события. Например:

allmyevents.com / events / my-recurring-event -> страница, показывающая повторяющееся событие с информацией о повторении

allmyevents.com / events / my-recurring-event / 16-4 -2020 -> страница, показывающая указанный c экземпляр повторяющегося события, который был отредактирован

В настоящее время я могу сделать это, создав совершенно новое событие в ту же дату и с тем же названием в качестве повторяющегося экземпляра события я хочу заменить его и написать логику хакерского сравнения c, чтобы сказать, является ли это событием замены, но это противоречит интуиции для управления событиями / контентом.

Большое спасибо, если кто-то может помочь.

1 Ответ

1 голос
/ 16 апреля 2020

Ответ:

Вы можете использовать конечную точку API календаря Events: instances, чтобы вернуть все экземпляры повторяющегося события. Все события, которые были отредактированы сами по себе, не будут возвращены.

Дополнительная информация:

Конечная точка Events: instances API Календаря вернет все экземпляры повторяющегося события для calendarId и eventId указано. Любые из них, которые были отредактированы, опущены.

Это немного обходной путь, поскольку эти события не могут быть получены напрямую, но путем получения списка событий, как вы уже делали, а затем удаляя события, возвращаемые Events: instances, вы можете создать список всех событий, которые были отредактированы с опцией «Только это событие».

Псевдо-код:

Вы можете сделать что-то вроде этого:

eventsList = Calendar.Events.List(calendarId, singleEvents=true)
eventsInstances = Calendar.Events.Instances(calendarId, recurringEventId)
singleEvents = eventsList

for each instance in eventsInstances :
  if eventsList.items contains instance :
    singleEvents.remove(instance)

return singleEvents

Где возвращаемая переменная singleEvents будет списком всех событий, которые были отредактированы вручную.

Я надеюсь, что это полезно для вас!

Рекомендации:

...