Документация › Интеграции › Google Calendar
Google Calendar
Бот сам записывает клиентов на приём: проверяет свободные слоты и ставит событие в твой Google-календарь. Подключается так же, как Таблицы, шарингом календаря с сервис-аккаунтом.
⏱ 7 мин · 👤 для владельца · 🟢 live
За 30 секунд:
- Подключение = поделиться Google-календарём с email сервис-аккаунта (права на изменение событий).
- Бот умеет: проверить свободное время, создать/изменить/удалить событие, показать список.
- Время, по умолчанию Asia/Almaty (астанинское), с учётом перехода на летнее/зимнее.
- В
calendar_idукажи ID своего календаря (для основного, твой email в Google; для отдельного, адрес вида...@group.calendar.google.com). Словоprimaryне подойдёт это технический календарь бота, тебе не видимый.
Что бот умеет с календарём
| Функция | Что делает |
|---|---|
Проверить свободное время (check_available_slots) | свободные слоты на дату с учётом рабочих часов |
Записать клиента (book_appointment) | создать событие (запись клиента) |
Перенести или изменить запись (update_calendar_event) | перенести/изменить событие |
Показать записи (calendar_list_events) | список предстоящих записей клиента |
Отменить запись (calendar_cancel_event) | отменить запись |
Главный сценарий, запись на приём: клиент пишет «хочу завтра в 15:00», бот проверяет, свободно ли, и создаёт событие. Удобно для салонов, клиник, мастеров, репетиторов.
Встроенная защита записи (работает сама, настраивать не нужно):
- Нет двойных броней. Перед созданием события система ещё раз проверяет занятость этого времени (с учётом вместимости слота), если два клиента одновременно берут последнее окно, второй получит предложение выбрать другое время.
- Клиент видит и меняет только свои записи. Список записей, перенос и отмена привязаны к клиенту этого чата (на всех каналах, WhatsApp и Telegram), чужие брони и ваши личные события в календаре бот клиенту не покажет и отменить не даст.
- Записать в прошлое нельзя, если бот перепутал дату, система отклонит бронь и попросит уточнить.
Как подключить
- Поделись календарём. Адрес сервис-аккаунта лежит наверху настроек функции, в панели с кнопкой «Скопировать», и виден сразу, до всякой проверки. Дальше: Google Календарь → «Настройки и общий доступ» нужного календаря → «Доступ для отдельных пользователей» → добавь этот адрес с правом «Внесение изменений в мероприятия».
- Отдельный календарь под бота удобнее личного: в левой колонке Google Календаря «Другие календари» → плюс → «Создать календарь». Его ID (вида
...@group.calendar.google.com) лежит в его же настройках, раздел «Интеграция календаря». - Укажи
calendar_idв функции это ID твоего календаря, тот же, с которым ты поделился на шаге 1. Для основного календаря его ID это твой email в Google (напримерivan@gmail.com); для отдельного календаря его ID есть в настройках календаря (вид...@group.calendar.google.com). ⚠️ Словоprimaryне подойдёт, так бот попадёт в свой технический календарь, который ты не видишь, и записи «пропадут». Нажми «Проверить подключение»: красная ошибка сразу покажет, если календарь указан неверно или доступ не выдан. - Настрой расписание работы прямо в функции «Проверить свободное время»: рабочие дни, часы, перерыв между слотами (в минутах), длительность слота, минимальный запас до записи. Бот предлагает клиентам только время внутри этих рамок. (До 2026-06-13 этот редактор не влиял на бота: теперь сервер читает расписание из настроек функции.)
- Записей на одно время (вместимость). По умолчанию
1, один приём на слот, как только на это время есть событие, бот его больше не предлагает. Поставь больше, если на одно время можно записать нескольких: несколько кресел/кабинетов работают параллельно или это групповое занятие. Например3: бот запишет до трёх клиентов на один и тот же час, а четвёртому предложит другое время. - Одинаковых объектов несколько (бани, корты, домики). Вместимость это и есть их число: один календарь на группу, «Записей на одно время» = сколько объектов. То же число поставь и в функции «Записать клиента»: без него она возьмёт вместимость у первой попавшейся функции проверки, и при нескольких группах числа перепутаются. Объекты разной вместимости или цены это разные группы, у каждой свой календарь и своя пара функций. Разбор с примером: Запись на время.
- Работаете за полночь или круглосуточно. Окно работы задаётся внутри одних суток, поэтому «с 11:00 до 02:00» пока не задать: ставьте
11:00-23:59. На саму бронь это не влияет, бот спокойно оформит запись, которая заканчивается ночью; не показываются только САМИ окошки после полуночи. У круглосуточного заведения по той же причине не попадёт в список последний час суток. - Выходной/отпуск: событием «на весь день». Создай в календаре событие на весь день (Отпуск, Выходной): бот не предложит записи в этот день, даже если вместимость больше 1.
- Приглашение клиенту на почту (по желанию). Тумблер «Отправлять клиенту приглашение на почту», если включить и клиент даст email, ему придёт приглашение на встречу из Google Календаря. По умолчанию выключено (незваные приглашения часто принимают за спам). Тумблер живёт в функции «Записать клиента», потому что почту отправляет именно она.
- Напоминания клиенту (по желанию). Тумблер «Напоминать клиенту о записи»: бот сам напишет клиенту в тот же чат перед визитом (снижает неявки). Расписание задаёте вы: добавьте одно или несколько напоминаний «за N минут/часов/дней до записи» (например «за 1 день» и «за 2 часа»). Текст можно свой, с подстановками
{{client_name}},{{date}},{{time}}: общий для всех напоминаний в поле внизу, а у каждого напоминания есть своя строка текста прямо под его сроком, если оставить её пустой, возьмётся общий. Так «за сутки» и «за 2 часа» могут говорить разное («не забудьте про завтра» и «выезжайте, ждём»). По умолчанию выключено. Перенос записи сдвигает напоминания, отмена: снимает их. В тест-чате напоминания не отправляются. - 🚨 Оба тумблера настраиваются в функции «Записать клиента», а не в «Проверить свободное время». До 2026-09-05 они показывались на любой календарной функции, и включение в функции проверки молча ничего не делало: настройку читает только та ветка, которая создаёт запись. Теперь в проверяющей функции этих блоков просто нет. Если у вас несколько объектов с раздельными календарями (баня 1, баня 2), напоминания включаются в каждой функции записи отдельно.
- Проверь в тест-чате: «запиши меня на завтра в 15:00».
См. также пошаговый гайд: Запись на время.
💡 Часовой пояс. По умолчанию бот считает время в Asia/Almaty, то есть «15:00» для клиента это 15:00 по Астане. Пояс можно переопределить в параметрах функции, переход на летнее/зимнее время учитывается автоматически.
💡 Обед и перерывы. Отдельной настройки «обед» нет, просто создай в своём календаре повторяющееся событие (например «Обед» с 13:00 до 14:00 каждый день). Бот считает это время занятым и не будет предлагать его клиентам. Так же удобно блокировать отпуск или личные дела.
⚠️ Не поделился календарём → бот не сможет создать событие. Как и с таблицами: сначала дай сервис-аккаунту доступ, потом указывай ID.
Простыми словами
Если у тебя запись по времени, салон, врач, автошкола, репетитор: календарь незаменим. Клиент пишет «можно завтра в три?», и бот сам смотрит в твой Google-календарь: свободно, записывает, занято, предлагает другое время. Тебе не надо ничего делать руками.
Подключается один в один как таблицы: открываешь свой календарь, даёшь доступ email-у бота (на изменение событий) и указываешь, какой именно календарь использовать. Время бот считает по Астане, так что «три часа»: это три по-нашему, без путаницы с часовыми поясами.
Дальше: → Gmail
Связано: Обзор интеграций · Google Sheets · Функции
Не получилось? → Функция не вызывается / падает