api.calendarEvent Работа с событиями календаря в формате ICS
- Методы интерфейса ICalendarEvent для работы с моделью события
- Методы интерфейса ICalendarEvent для корректного отображения события в письме оповещения
-
api.calendarEvent.create(summary, start)
Создание события.
Метод только создает файл события календаря. Чтобы воспользоваться этим событием, нужно отправить его как вложение в письме, тогда получатель сможет добавить событие в свой календарь.
Если событие сгенерировано без использования часового пояса, тогда время события будет интерпретироваться у пользователя, который получил письмо с событием, как указанное в его часовом поясе.
Параметры метода:
- summary — название события. String;
- start — дата и время начала события. Date.
Методы интерфейса ICalendarEvent для работы с моделью события
-
ICalendarEvent setEndDateTime(end)
Устанавливает дату и время окончания события.
Параметр метода:
- end — дата и время окончания события. Date.
-
ICalendarEvent setDescription(description)
Устанавливает описание события.
Параметр:
- description — описание события. String.
-
ICalendarEvent setRecurRule(frequency, count)
ICalendarEvent setRecurRule(frequency, endRecur)
Устанавливает повторяемость события.
Параметры метода:
-
frequency — частота события. String.
- "FREQ_DAILY" — ежедневно;
- "FREQ_WEEKLY"' — еженедельно;
- "FREQ_MONTHLY" — ежемесячно;
- "FREQ_YEARLY" — ежегодно.
- count — количество повторений события. Int;
- endRecur — количество повторений события. Date.
-
-
getContentAsString()
Получение события в виде строки для сохранения.
Пример 1.
/* Параметры */
String eventTitle = "Название события";
String eventDescription = "Описание события";
String fileName = "event.ics"; //имя файла с расширением
String rootUuid = "root\$801"; //UUID объекта к которому прикрепится событие
String contentType = "text/calendar"; //тип содержимого файла (mime-тип)
def s = new GregorianCalendar(2021, Calendar.APRIL, 28, 18, 0); //дата начала события
def e = new GregorianCalendar(2021, Calendar.APRIL, 28, 19, 0); //дата окончания события
def r = new GregorianCalendar(2021, Calendar.APRIL, 30, 20, 0); //дата до которой будет повторяться событие
/* Создание модели события */
def event = api.calendarEvent.create(eventTitle, s.getTime())
.setEndDateTime(e.getTime())
.setRecurRule(api.calendarEvent.FREQ_DAILY, r.getTime())
.setDescription(eventDescription);
/* Прикрепление файла к объекту */
def attachedEvent = api.utils.attachFile(utils.get(rootUuid), fileName, contentType, fileName, event.getContentAsString().getBytes());
Пример 2.
/* Параметры */
String eventTitle = "Название события";
String eventDescription = "Описание события";
String fileName = "event.ics"; //имя файла с расширением
String rootUuid = "root\$801"; //UUID объекта к которому прикрепится событие
String contentType = "text/calendar"; //тип содержимого файла (mime-тип)
String timeZone = "Europe/Copenhagen"; // часовой пояс в котором указвыаются даты\время события
def s = new GregorianCalendar(TimeZone.getTimeZone(timeZone));
s.set(2021, 5, 19, 18, 0, 0); //дата начала события
def e = new GregorianCalendar(TimeZone.getTimeZone(timeZone));
e.set(2021, 5, 19, 19, 0, 0); //дата окончания события
def r = new GregorianCalendar(TimeZone.getTimeZone(timeZone));
r.set(2021, 5, 21, 20, 0, 0); //дата до которой будет повторяться событие
/* Создание модели события */
def event = api.calendarEvent.create(eventTitle, s.getTime(), timeZone)
.setEndDateTime(e.getTime())
.setRecurRule(api.calendarEvent.FREQ_DAILY, r.getTime())
.setDescription(eventDescription);
Пример 3.
/* Параметры */
String eventTitle = "Название события";
String eventDescription = "Описание события";
String fileName = "event.ics"; //имя файла с расширением
String rootUuid = 'ou$801'; //UUID объекта к которому прикрепится событие
String contentType = "text/calendar"; //тип содержимого файла (mime-тип)
String timeZone = "Europe/Moscow"; // часовой пояс в котором указвыаются даты\время события
def s = new Date().parse("dd/MM/yyyy HH:mm XXX", "17/06/2021 17:00 +03:00")
def e = new Date().parse("dd/MM/yyyy HH:mm XXX", "17/06/2021 18:00 +03:00")
def r = new Date().parse("dd/MM/yyyy HH:mm XXX", "29/06/2021 17:00 +03:00")
/* Создание модели события */
def event = api.calendarEvent.create(eventTitle, s, timeZone)
.setEndDateTime(e)
.setRecurRule(api.calendarEvent.FREQ_DAILY, r)
.setDescription(eventDescription);
def attachedEvent = api.utils.attachFile(utils.get(rootUuid), fileName, contentType, fileName, event.getContentAsString().getBytes());
Методы интерфейса ICalendarEvent для корректного отображения события в письме оповещения
-
ICalendarEvent setOrganizerName(name)
Устанавливает имя организатора.
Для корректного отображения события в письме обязательно нужно создавать событие с использованием методов setOrganizerEmail и setOrganizerName.
Параметр метода:
- name — имя организатора. String.
-
ICalendarEvent setOrganizerEmail(organizerEmail)
Устанавливает email организатора.
Параметр метода:
- organizerEmail — email организатора. String.
- ICalendarEvent setUID(uid)
Устанавливает UID события.
По умолчанию, заполнять UID методом setUID не нужно, поскольку это может привести к наличию одинаковых UID у разных событий. UID генерируется и присваивается событию при его создании методом create. Метод setUID нужно использовать только для переноса/отмены заданного события и в качестве аргумента передавать UID созданного раннее события, которое нужно перенести/отменить
Параметр метода:
- uid — UID события. String.
-
ICalendarEvent setMethod(method)
Устанавливает метод события.
По умолчанию, событие создается с методом REQUEST, поэтому метод setMethod можно использовать только для отмены уже существующего события
Параметр метода:
-
method — метод события. String
- REQUEST - запланировать событие;
- CANCEL - отменить событие.
-
-
String getMethod()
Получить метод события.
-
String getUID()
Получить UID события.
Примеры:
-
Пример создания события календаря и прикрепления его к оповещению.
Copy/* Параметры */
String eventTitle = "Название события";
String eventDescription = "Описание события";
String timeZone = "Asia/Yekaterinburg"; // часовой пояс в котором указываются даты\время события
String organizerName = "Фамилия И.О"; // имя организатора
String organizerEmail = "test@nausd.local"; // email организатора
def s = new GregorianCalendar(2021, Calendar.NOVEMBER, 23, 17, 0); // дата начала события
def e = new GregorianCalendar(2021, Calendar.NOVEMBER, 23, 20, 0); // дата завершения события
/* Создание объекта события */
def event = api.calendarEvent.create(eventTitle, s.getTime(), timeZone)
.setEndDateTime(e.getTime())
.setDescription(eventDescription)
.setOrganizerName(organizerName)
.setOrganizerEmail(organizerEmail)
/* Прикрепление события к оповещению */
notification.addCalendarEvent(event) -
Пример переноса времени события
Для того, чтобы перенести событие созданное раннее событие, нужно иметь его UID . Для его получения нужно использовать метод getUID и полученное значение сохранить в атрибут объекта-заглушки.
Скрипт переноса события отличается от скрипта создания события только тем, что нужно заполнить UID события.
Copy/* Параметры */
String eventTitle = "Название события";
String eventDescription = "Описание события";
String timeZone = "Asia/Yekaterinburg"; // часовой пояс в котором указываются даты\время события
String organizerName = "Фамилия И.О"; // имя организатора
String organizerEmail = "test@nausd.local"; // email организатора
String eventUid = "f410df49-17d1-dcb5-0000-00001c9f634d" // UID события, которое нужно перенести
def s = new GregorianCalendar(2021, Calendar.NOVEMBER, 24, 17, 0); // перенесенная дата начала события
def e = new GregorianCalendar(2021, Calendar.NOVEMBER, 24, 20, 0); // перенесенная дата завершения события
/* Создание объекта события */
def event = api.calendarEvent.create(eventTitle, s.getTime(), timeZone)
.setEndDateTime(e.getTime())
.setDescription(eventDescription)
.setOrganizerName(organizerName)
.setOrganizerEmail(organizerEmail)
.setUID(eventUid)
/* Прикрепление события к оповещению */
notification.addCalendarEvent(event) -
Пример отмены события
Скрипт отмены события отличается от скрипта создания события тем, что нужно заполнить UID события и значение параметра METHOD строкой "CANCEL".
Copy/* Параметры */
String eventTitle = "Название события";
String eventDescription = "Описание события";
String timeZone = "Asia/Yekaterinburg"; // часовой пояс в котором указываются даты\время события
String organizerName = "Фамилия И.О"; // имя организатора
String organizerEmail = "test@nausd.local"; // email организатора
String eventUid = "f410df49-17d1-dcb5-0000-00001c9f634d" // UID события, которое нужно отменить
def s = new GregorianCalendar(2021, Calendar.NOVEMBER, 23, 17, 0);
def e = new GregorianCalendar(2021, Calendar.NOVEMBER, 23, 20, 0);
/* Создание объекта события */
def event = api.calendarEvent.create(eventTitle, s.getTime(), timeZone)
.setEndDateTime(e.getTime())
.setDescription(eventDescription)
.setOrganizerName(organizerName)
.setOrganizerEmail(organizerEmail)
.setMethod("CANCEL")
.setUID(eventUid)
/* Прикрепление события к оповещению */
notification.addCalendarEvent(event)