Все ноды/Integrations/Calendar
Получить событие календаря
GET одного ресурса календаря (iCalendar).
Тип в графе: calendar_get_event
Exec
Можно включить ветку ошибки (expose_error_output) и обработать сбой отдельным путём.
Порты можно разделить на исполнение и данные (split ports).
Как попробовать
Минимальный рабочий воркфлоу
- Исполнение
- Данные
- Исполнение + данные
Перед запуском выберите своё подключение или базу знаний — в графе стоит REPLACE_ME.
Как применять
Один адрес — один ресурс: сырой iCalendar целиком и, что важнее, свежий etag, под которым
дальше пойдёт запись. Когда адресов несколько, за ними ходит одним запросом
Мультизапрос календаря. Найти сами адреса — задача
Запроса к календарю.
Как это работает
Нода запрашивает объект по полю «href события». Относительный путь разрешается относительно
базового URL подключения, абсолютный берётся как есть, так что значение из результата запроса
подставляется без правки: {{ nodes.query.output.events[0].href }}.
На выходе href, etag, ics — документ в том виде, в каком его отдал сервер, — и summary с
разобранными полями первого компонента ресурса (VEVENT или VTODO): uid, summary, dtstart,
dtend, all_day, timezone, rrule, status, sequence, last_modified. Если тела нет,
summary равен null.
Частые ошибки
summary— это объект, а не строка. Заголовок события лежит в{{ nodes.<id>.output.summary.summary }};{{ nodes.<id>.output.summary }}отдаст весь набор полей.- Разобран только первый компонент. У повторяющегося события с изменёнными вхождениями
остальные компоненты остаются только внутри
ics— разбирайте его сами, если они нужны. - Отсутствие ресурса — это ошибка. 404 останавливает ноду с
error_codeNOT_FOUND, и повтор ничего не изменит: ошибка детерминированная. Чтобы обработать отсутствие в графе, включите «Выход ошибки» и разберите код в ветке. - ETag стареет после любой записи. Значение, полученное здесь, действительно до первого
изменения события; после
Изменить событие календаря берите
etagиз его вывода. - Целый календарь так не выгрузить. Поле ждёт адрес одного объекта, а не коллекции — список событий даёт Запрос к календарю.
Входы
| Порт | Провод | Данные | Примечания |
|---|---|---|---|
Calendar storecalendar_store | Данныеdata | — | обязателен |
Выходы
| Порт | Провод | Данные | Примечания |
|---|---|---|---|
Successoutput | Исполнение + данныеexecute_data | object | |
Erroron_error | Исполнение + данныеexecute_data | — | показывается, когда expose_error_output = true |
Настройки
| Поле | Тип | По умолчанию | Описание |
|---|---|---|---|
Подключение CalDAVconnection_id | string | "" | Сохранённое подключение CalDAV из воркспейса: простому календарному воркфлоу не нужна отдельная нода CalDAV Config. Нода, подключённая к порту 'calendar_store', имеет приоритет над этим полем. подключение: caldavперекрывается портом: calendar_store |
href событияhref | string | "" | Путь или абсолютный URL объекта календаря — ровно в том виде, в каком его вернула нода Calendar Query или Calendar Multiget ({{ nodes.<query>.output.events[0].href }}). Относительный путь разрешается относительно базового URL подключения. Пример: /remote.php/dav/calendars/user/personal/9f1c-1234.ics поддерживает шаблоны |
Общие поля
Эти три поля есть у каждой ноды: платформа добавляет их сама, а не автор ноды.
expose_error_output— Если включено, показывает выход выполнения для подключения нод, которые запускаются при сбое этого шага.split_ports_in— Показывать отдельные порты входа для выполнения и данных вместо одного объединённого.split_ports_out— Показывать отдельные порты выхода для выполнения и данных вместо одного объединённого.