Все ноды/Integrations/Calendar

Изменить событие календаря

Патч по схеме read-modify-write первого VEVENT в ресурсе.

Изменить событие календаря
Calendar storeSuccess
Error

Тип в графе: calendar_patch_event

Exec

Можно включить ветку ошибки (expose_error_output) и обработать сбой отдельным путём.

Порты можно разделить на исполнение и данные (split ports).

Как попробовать

Минимальный рабочий воркфлоу

Вход
Изменить событие календаря
Конфигурация CalDAV
Выход
  • Исполнение
  • Данные
  • Исполнение + данные
Нажмите «Скопировать ноды», откройте редактор и нажмите Ctrl+V на холсте.

Перед запуском выберите своё подключение или базу знаний — в графе стоит 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_dataobject
Erroron_errorИсполнение + данныеexecute_data

показывается, когда expose_error_output = true

Настройки

ПолеТипПо умолчаниюОписание
Подключение CalDAVconnection_idstring""

Сохранённое подключение CalDAV из воркспейса: простому календарному воркфлоу не нужна отдельная нода CalDAV Config. Нода, подключённая к порту 'calendar_store', имеет приоритет над этим полем.

подключение: caldavперекрывается портом: calendar_store

href событияhrefstring""

Путь или абсолютный URL объекта календаря — ровно в том виде, в каком его вернула нода Calendar Query или Calendar Multiget ({{ nodes.<query>.output.events[0].href }}). Относительный путь разрешается относительно базового URL подключения. Пример: /remote.php/dav/calendars/user/personal/9f1c-1234.ics

поддерживает шаблоны

Новый заголовокsummarystring""

Заменяет SUMMARY. Пусто — текущий заголовок остаётся без изменений.

поддерживает шаблоны

Новое описаниеdescriptionstring""

Заменяет DESCRIPTION. Пусто — текущий текст остаётся без изменений.

поддерживает шаблоны

Новое местоlocationstring""

Заменяет LOCATION. Пусто — текущее место остаётся без изменений.

поддерживает шаблоны

Новое началоdtstartstring""

Заменяет DTSTART, ISO 8601. Пусто — текущее начало остаётся без изменений.

поддерживает шаблоны

Новый конецdtendstring""

Заменяет DTEND, ISO 8601. Пусто — текущий конец остаётся без изменений.

поддерживает шаблоны

Событие на весь деньall_daybooleanfalse

Записать новые начало и конец как даты (VALUE=DATE), а не как время.

Дополнительно
ETagetagstring""

Токен оптимистичной блокировки. Пусто — сначала читается текущий токен, и запись идёт под него (побеждает последняя запись). Укажите токен, чтобы обновление упало с 412 (error_code=PRECONDITION_FAILED), если событие тем временем кто-то отредактировал. Нода возвращает НОВЫЙ etag.

поддерживает шаблоны

Общие поля

Эти три поля есть у каждой ноды: платформа добавляет их сама, а не автор ноды.

  • expose_error_output — Если включено, показывает выход выполнения для подключения нод, которые запускаются при сбое этого шага.
  • split_ports_in — Показывать отдельные порты входа для выполнения и данных вместо одного объединённого.
  • split_ports_out — Показывать отдельные порты выхода для выполнения и данных вместо одного объединённого.