Все ноды/Integrations/Calendar
Занятость календаря
REPORT free-busy-query для заданных календарей.
Тип в графе: calendar_freebusy
Exec
Можно включить ветку ошибки (expose_error_output) и обработать сбой отдельным путём.
Порты можно разделить на исполнение и данные (split ports).
Как попробовать
Минимальный рабочий воркфлоу
- Исполнение
- Данные
- Исполнение + данные
Перед запуском выберите своё подключение или базу знаний — в графе стоит REPLACE_ME.
Как применять
Отвечает на один вопрос: какие интервалы заняты. Ни заголовков, ни участников, ни адресов событий — если нужны сами встречи, берите Запрос к календарю. Типичное применение — подобрать свободный слот, не заглядывая в содержимое чужого календаря: для этого часто хватает и тех прав, которых не хватает на чтение событий.
Как это работает
Нода спрашивает у сервера занятость по списку коллекций. Адреса перечисляются в поле «URL календарей» через запятую или с новой строки; пустое поле означает календарь по умолчанию из подключения. Диапазон обязателен и подчиняется тем же правилам, что и у запроса к календарю: ISO 8601, конец позже начала, не больше 366 дней, значение без часового пояса читается как UTC.
На выходе busy_periods — список пар { "start": …, "end": … }. Значения приходят такими, какими
их прислал сервер: в базовом формате iCalendar (20260701T090000Z), а не в ISO с дефисами.
Приводите их к нужному виду сами, если собираетесь показывать пользователю.
Частые ошибки
- Пустой список значит две разные вещи. «В диапазоне свободно» и «сервер не отдал сведений о занятости» выглядят одинаково. Проверьте ноду на календаре с заведомо занятым слотом, прежде чем строить на ней логику.
- Границей интервала может оказаться длительность. Формат допускает запись «начало и
продолжительность», и тогда в
endокажется что-то вродеPT1H. Разбирайте значение, а не считайте его временем безоговорочно. - Свободные окна нода не считает. Она отдаёт занятое; вычитание интервалов из рабочего дня — ваша задача, например нодой JavaScript-код.
- Чужой календарь виден не всегда. Права на занятость выдаются на сервере отдельно; отказ
приезжает с кодом
ACCESS_DENIED. - Один запрос — один аккаунт. Перечислять можно только коллекции того подключения, которое подано на порт: календари другого аккаунта — это другая нода с другой конфигурацией.
Входы
| Порт | Провод | Данные | Примечания |
|---|---|---|---|
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 |
URL календарейcalendar_urls | string | "" | URL коллекций календарей через запятую или с новой строки. Пусто = URL календаря по умолчанию из подключённого CalDAV-подключения. поддерживает шаблоны |
Начало диапазонаtime_start | string | "" | Начало диапазона, ISO 8601, включительно. Пример: 2026-07-01T00:00:00Z (значение без часового пояса читается как UTC). поддерживает шаблоны |
Конец диапазонаtime_end | string | "" | Конец диапазона, ISO 8601. Должен быть позже начала; диапазон не может превышать 366 дней. Пример: 2026-07-31T23:59:59Z поддерживает шаблоны |
Общие поля
Эти три поля есть у каждой ноды: платформа добавляет их сама, а не автор ноды.
expose_error_output— Если включено, показывает выход выполнения для подключения нод, которые запускаются при сбое этого шага.split_ports_in— Показывать отдельные порты входа для выполнения и данных вместо одного объединённого.split_ports_out— Показывать отдельные порты выхода для выполнения и данных вместо одного объединённого.