Документация › Инструменты бота › Запись на время
Запись на время
Бот сам показывает свободное время и записывает клиента: простым способом через Google Calendar или «движком окошек» для нескольких специалистов.
⏱ 12 мин · 👤 для владельца · 🟢 live
За 30 секунд:
- Три способа записи: выберите под свой бизнес (ниже шпаргалка).
- Google Calendar: один специалист, простой график.
- Движок окошек: несколько мастеров, график в таблице, обеды/отпуска/ограничения.
- Google Таблицы, если вы уже ведёте слоты строками в таблице.

Как выбрать способ
| Ваша ситуация | Способ |
|---|---|
| Один мастер/кабинет, простой график | Google Calendar: бот смотрит занятость календаря и записывает |
| Несколько специалистов, график в таблице, есть обеды, отпуска, ограничения по дням/возрасту | Движок окошек: сервер сам считает свободные слоты, бот не ошибается |
| Вы уже ведёте слоты строками в таблице | Google Таблицы (см. статью про Таблицы) |
Способ A. Google Calendar (один специалист)
Что понадобится
- ☐ Google-календарь
- ☐ Доступ для сервис-аккаунта (одна кнопка в настройках функции)
Шаги
Проект → Функции → Создать → Из готового шаблона → Запись на время → группа «Google Calendar». Здесь 5 готовых действий: проверить свободное время, записать, перенести, показать записи, отменить.- В настройках укажите Календарь это ID вашего календаря, для основного его ID = ваш email в Google (например
ivan@gmail.com), для отдельного: адрес вида...@group.calendar.google.com. Затем нажмите «Проверить подключение». ⚠️ Словоprimaryне подойдёт, так бот попадёт в свой технический календарь, вам не видимый, и записи «пропадут»; кнопка проверки в этом случае покажет красную ошибку. - Откройте сервис-аккаунту доступ к календарю: на панели функции есть email сервис-аккаунта, добавьте его в доступ календаря с правами «Редактор».
- Настройте расписание работы: рабочие дни, часы, обед, длительность слота, минимальный запас до записи. Это настройки самой функции: бот будет предлагать только время внутри них.
⚠️ Важно. Расписание работы задаётся прямо в настройках функции «Проверить свободное время». Бот предлагает слоты строго в этих рамках.
📌 Пример (стоматология). Функция «Записать клиента» с длительностью слота 60 минут, рабочие дни Пн-Сб 9:00-19:00, запас 60 минут. Бот не запишет на ближайший час и не предложит воскресенье.
Способ B. Движок окошек (несколько специалистов)
Одна функция вместо цепочки «прочитай график → возьми занятость → посчитай сам». Сервер сам учитывает часы по дням, обеды, отпуска, ограничения дней и возраст, и отдаёт боту готовый список свободных слотов с именами специалистов.
Что понадобится
- ☐ Google-таблица с графиком специалистов
- ☐ Список услуг (заполняется в конструкторе: без JSON руками)
- ☐ (если берёте занятость из CRM) подключённая Education CRM
Формат листа-графика
Лист должен содержать колонки: специалист, услуга (предмет), минимальный возраст, семь колонок дней (пн…вс) с часами работы, обеды, комментарии. Имена колонок по умолчанию: «Преподаватель», «Предмет», «Минимальный возраст», «Обеды», «Комментарии». Если у вас они называются иначе в настройках функции есть раздел «Колонки в листе называются иначе?».
В ячейках дней пишутся часы работы; комментарии понимают ограничения вроде «пробные только вт/чт/сб», маркеры «(без ПЗ)/(день ПЗ)». Непонятное ограничение → специалист скрывается с пометкой менеджеру (лучше не показать, чем показать недоступного).
Шаги
Создать → Запись на время → Свободные окошки для записи.- Укажите ID Google-таблицы с графиком и нажмите проверку подключения.
- Услуги заполняются в конструкторе, для каждой услуги: название (как в колонке «Предмет»), синонимы через запятую, минимальный возраст, и (если занятость из CRM)
branch_id/subject_idиз вашей Education CRM. - Источник занятости: «Education CRM» (берёт занятые уроки из CRM) или «Только график» (без CRM).
- Параметры окна: длительность слота, за сколько дней минимум можно записаться, горизонт показа (максимум 14 дней), окно работы бизнеса, таймзона.
💡 Совет. Не вводите JSON руками: конструктор услуг и колонок соберёт его за вас. Кнопка «Редактировать как JSON» оставлена на случай тонкой правки.
Проверь, что работает
Откройте функцию → «Проверить» → передайте услугу (и возраст, если нужен) → бот вернёт список свободных слотов. Для Calendar: проверьте, что слоты попадают в ваши рабочие часы.
Частые ошибки
| Симптом | Причина | Что нажать |
|---|---|---|
| Бот предлагает время вне рабочих часов | Расписание не настроено или взяты дефолты | Откройте функцию «Проверить свободное время», задайте часы/дни |
| «нет специалистов по услуге» | Название услуги не совпадает с колонкой «Предмет» | Сверьте название/синонимы в конструкторе услуг |
| Не считается занятость | Не подключена Education CRM или нет branch_id | Подключите CRM, заполните branch_id/subject_id |
Вопросы, которые обычно возникают
Можно показывать запись на сегодня?
Да: поставьте «Запись минимум за» = 0.
Сколько дней вперёд показывает движок окошек?
До 14 дней (горизонт настраивается).
Под капотом
- Движок окошек:
builtin_booking(find_free_slots), пересечение графика из Sheets ∩ RU-ограничений из комментариев ∩ занятости из edu-CRM. Модель не делает табличную математику: получает готовый ответ. - Google Calendar:
builtin_calendar; расписание читается из настроек функции (builtin_config): рабочие дни/часы/слот/запас/таймзона. - Услуги хранятся в
services_json, имена колонок: вcolumns_json; конструктор сериализует их за вас.
Простыми словами
Представьте администратора, который наизусть знает график всех мастеров: кто когда работает, у кого обед, кто в отпуске, кого нельзя ставить детям. Клиент говорит «хочу на гитару»: администратор мгновенно называет реальные свободные окошки. Движок окошек это и есть такой администратор внутри бота. А если мастер один, хватит простого календаря.
Дальше: → Бот выставляет счёт
Связано: Google Таблицы · Google Calendar
Не получилось? → Функция не срабатывает