Все ноды/Integrations/Calendar
Изменить событие календаря
Патч по схеме read-modify-write первого VEVENT в ресурсе.
Тип в графе: calendar_patch_event
Exec
Можно включить ветку ошибки (expose_error_output) и обработать сбой отдельным путём.
Порты можно разделить на исполнение и данные (split ports).
Как попробовать
Минимальный рабочий воркфлоу
- Исполнение
- Данные
- Исполнение + данные
Перед запуском выберите своё подключение или базу знаний — в графе стоит REPLACE_ME.
Как применять
Меняет отдельные поля существующего события, не трогая остальные. Это правильный выбор для «перенести на час», «поменять место», «дописать в описание». Полная замена объекта — это Записать событие календаря.
Как это работает
Нода читает ресурс, правит первый VEVENT и записывает его обратно — всё за один шаг. Заполненные
поля заменяют значения, пустые оставляют как есть. Хотя бы одно поле должно быть заполнено, иначе
нода остановится с кодом VALIDATION, не обратившись к серверу.
Пустой ETag означает «прочитать текущий и писать под него»: побеждает последняя запись. Указанный
ETag превращает столкновение в отказ 412 (error_code PRECONDITION_FAILED) вместо тихой
перезаписи чужой правки.
При записи счётчик SEQUENCE события увеличивается на единицу — по нему клиенты понимают, что
встреча обновилась. На выходе href, ics (объединённый документ) и etag — новый; тот, что вы
передали на вход, после записи недействителен.
Частые ошибки
- Пустым полем ничего не стереть. Пустое значение значит «не трогать». Убрать описание или место можно только полной перезаписью через Записать событие календаря.
- Правится только первый VEVENT. Изменённые вхождения повторяющейся серии, лежащие в том же ресурсе, остаются нетронутыми.
- «Событие на весь день» само по себе ничего не меняет. Флаг определяет, как записываются новые начало и конец. Если ни одно из них не заполнено, нода перепишет событие без изменений — вырастет только SEQUENCE.
- Второй запуск со старым ETag. Первый успешен и выдаёт новый токен, второй с прежним падает
на 412. В цепочке из двух правок берите
{{ nodes.<patch>.output.etag }}. - Задачу так не поправить. Нода ищет в ресурсе VEVENT; на VTODO она останавливается с
ошибкой
VALIDATION.
Входы
| Порт | Провод | Данные | Примечания |
|---|---|---|---|
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 поддерживает шаблоны |
Новый заголовокsummary | string | "" | Заменяет SUMMARY. Пусто — текущий заголовок остаётся без изменений. поддерживает шаблоны |
Новое описаниеdescription | string | "" | Заменяет DESCRIPTION. Пусто — текущий текст остаётся без изменений. поддерживает шаблоны |
Новое местоlocation | string | "" | Заменяет LOCATION. Пусто — текущее место остаётся без изменений. поддерживает шаблоны |
Новое началоdtstart | string | "" | Заменяет DTSTART, ISO 8601. Пусто — текущее начало остаётся без изменений. поддерживает шаблоны |
Новый конецdtend | string | "" | Заменяет DTEND, ISO 8601. Пусто — текущий конец остаётся без изменений. поддерживает шаблоны |
Событие на весь деньall_day | boolean | false | Записать новые начало и конец как даты (VALUE=DATE), а не как время. |
| Дополнительно | |||
ETagetag | string | "" | Токен оптимистичной блокировки. Пусто — сначала читается текущий токен, и запись идёт под него (побеждает последняя запись). Укажите токен, чтобы обновление упало с 412 (error_code=PRECONDITION_FAILED), если событие тем временем кто-то отредактировал. Нода возвращает НОВЫЙ etag. поддерживает шаблоны |
Общие поля
Эти три поля есть у каждой ноды: платформа добавляет их сама, а не автор ноды.
expose_error_output— Если включено, показывает выход выполнения для подключения нод, которые запускаются при сбое этого шага.split_ports_in— Показывать отдельные порты входа для выполнения и данных вместо одного объединённого.split_ports_out— Показывать отдельные порты выхода для выполнения и данных вместо одного объединённого.