Как создать ссылку на событие Календаря Google?

Если у меня есть идентификатор события в Календаре Google, например:

4htgpmm1hmak744r0kbkdcodar@google.com

Как создать URL-адрес для просмотра сведений о событии в интерфейсе Календаря Google?

Например, если я захожу на событие календаря Google, я вижу URL-адрес, такой как этот:

https://calendar.google.com/calendar/r/eventedit/NGh0Z3BtbTFobWFrNzQ0cjBrYmtkY29kYXIgZXVndTlrYW4xZGRpMXBtaTZzazNpYjWoNmdAZw

Из какой функции / алгоритма можно запустить 4htgpmm1hmak744r0kbkdcodar@google.com в NGh0Z3BtbTFobWFrNzQ0cjBrYmtkY29kYXIgZXVndTlrYW4xZGRpMXBtaTZzazNpYjWoNmdAZw?

Бонус: бонус был бы, если бы существовал также ярлык, который работал на CalendarEvent через Google Apps Script. Например, если был такой метод, как getUrl() так же, как есть метод getId().

3 ответа

Решение

Поскольку одно и то же событие может существовать в нескольких календарях (например, путем приглашения к нему других), идентификатор события не является достаточной информацией.

Для создания URL-адреса вам понадобится как идентификатор события ( уточните, как его найти), так и идентификатор календаря (инструкции по его поиску см. Ниже). Затем вам нужно будет закодировать оба как base64, и, наконец, у вас будет действительная ссылка на событие Календаря Google.

Для следующих инструкций представьте, что у нас есть событие Event1, и оно существует в обоих календарях, CalendarA и CalendarB.

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

  • Событие1 в Календаре
  • Event1 в CalendarB

Давайте назначим следующие идентификаторы:

  • Идентификатор события 1: 4htgpmm1hmak744r0kbkdcodar@google.com
  • CalendarA ID: eugu9kan1ddi1pmi6sk3ib56g@group.calendar.google.com
  • CalendarB ID: afd3zeuguoepmi32s5i56g@group.calendar.google.com

Чтобы создать URL-адрес события:

  1. Получить event-id, который является идентификатором события без @google.com

    Например, для Event1 мы имеем 4htgpmm1hmak744r0kbkdcodar

  2. Получить calendar-id, который является идентификатором календаря с @group.calendar.google.com заменено на @g

    Например, для календаря у нас есть eugu9kan1ddi1pmi6sk3ib56g@g

  3. Соедините два значения с пробелом в середине.

    <event-id> <calendar-id>
    

    Например, для Event1 + CalendarA мы имеем:

    4htgpmm1hmak744r0kbkdcodar eugu9kan1ddi1pmi6sk3ib56g@g
    
  4. Кодируйте значение как base64 (например, на https://www.base64decode.org/):

    NGh0Z3BtbTFobWFrNzQ0cjBrYmtkY29kYXIgZXVndTlrYW4xZGRpMXBtaTZzazNpYjWoNmdAZw
    
  5. Теперь вы можете добавить это значение к https://calendar.google.com/calendar/r/eventedit/

    https://calendar.google.com/calendar/r/eventedit/NGh0Z3BtbTFobWFrNzQ0cjBrYmtkY29kYXIgZXVndTlrYW4xZGRpMXBtaTZzazNpYjWoNmdAZw
    
  6. Вы сделали! Этот URL приведет вас к событию календаря в интерфейсе Google.


Как найти идентификатор календаря

Если вам нужны инструкции, как найти идентификатор календаря...

Чтобы найти идентификатор календаря:

  1. Перейти в настройки календаря
  2. Прокрутите вниз, пока не найдете поле идентификатора календаря.

    Это может быть значение, которое заканчивается @group.calendar.google.com, ваш адрес электронной почты или другое значение.

Если вы не можете найти идентификатор календаря, другой инструмент, который может помочь, - это добавить eventdeb=1 параметр URL-адреса, перейдите к информации об устранении неполадок события, а затем найдите либо organizer или же participant значения, оба из которых содержат идентификаторы календаря.

@Senseful had был очень полезным ответом, и он работает!

Несколько важных моментов, которые следует отметить в дополнение к вышесказанному. Во-первых, при кодировании base64 вы получите == в конце, удалите это

Во-вторых, URL-адрес базового календаря не будет работать, если календарь, к которому относится событие, не принадлежит основной учетной записи, с которой пользователь вошел в систему. Например, если вы вошли в 3 учетные записи, у вас будет свой URL-адрес для каждой, например

https://calendar.google.com/calendar/r/...

https://calendar.google.com/calendar/b/2/r/...

https://calendar.google.com/calendar/b/3/r/...

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

Если ваш идентификатор календаря4htgpmm1hmak744r0kbkdcodar@google.com, то вы можете создать ссылку, напримерhttps://calendar.google.com/u/0/r/eventedit?src=4htgpmm1hmak744r0kbkdcodar@google.com

Другие вопросы по тегам