Делюсь этой схемой с удовольствием. Ниже пошаговая инструкция: восемь шагов, к каждому готовый промпт. Копируй текст, описывай свою работу и собирай решение под себя. Тот же принцип можно адаптировать для других услуг, но их расписание, поля и требования к данным нужно проверить отдельно.
А началось всё с постоянной перестановки записей.
Я работаю по предварительной записи и сам совмещаю процедуру с перепиской и организацией дня. Утром проверяю календарь. В течение дня отвечаю на сообщения, уточняю, какая процедура нужна, подбираю длительность, переставляю записи и напоминаю о визите.
С повторным клиентом обычно всё проще. Он уже знает, чего хочет, и его запись занимает стандартное окно. С первым визитом иначе. Нужно уточнить запрос, подготовить место и оставить время на короткий опрос. Если поставить его в такое же окно, как повторную процедуру, весь день начинает ехать.
Именно это правило я долго держал в голове вместо того, чтобы вынести его в запись. Клиент спрашивал о времени, я открывал календарь, вспоминал длительность процедуры, проверял соседние записи и только потом отвечал. Иногда человек ждал, пока я освобожусь между процедурами. Иногда мы несколько раз меняли время.
Первый результат оказался очень будничным. В календаре появились две кнопки: «первый визит» и «повторный клиент». Под каждой своя длительность. Вместе с этим появился список напоминаний, чтобы я не держал все сообщения в голове.
Я перестал впихивать первый прием в короткое окно и потом сдвигать весь день. Запись осталась простой, но теперь учитывает, как реально проходит моя работа.
Что стало вместо переписки и звонков?

Я не убирал общение полностью. Если человек спрашивает о противопоказаниях, переносе или формате процедуры, я отвечаю сам. Но обычный вопрос «когда можно прийти?» больше не требует отдельного диалога.
На странице записи сначала выбирают процедуру. Следом указывают, это первый визит или повторный. После этого форма показывает свободные интервалы. Перед отправкой формы размести ссылку на политику обработки персональных данных. До публикации определи применимое основание обработки для своей модели; если для этой цели требуется согласие, добавь отдельный чекбокс согласия на обработку данных и зафиксируй его текст, дату и способ получения. Согласие на рекламную рассылку не смешивай с согласием для записи, а способ его получения и хранения проверь по применимым требованиям и зафиксируй отдельно. Для повторного клиента доступно стандартное окно. Для первого визита календарь ищет более длинный промежуток.
Это важная мелочь. Если человек впервые пришел на процедуру, мне не приходится начинать разговор с того, что свободное время уже закончилось из-за слишком короткого окна. Правило работает до того, как запись попала в мой день.
В полной реализации заявку можно сохранять в журнале с датой и временем, контактами, процедурой, комментарием, статусом и идентификатором события. Календарь показывает занятый интервал, а письма и Telegram можно подключить как отдельный слой уведомлений после проверки основной записи.
Я специально не добавлял личный кабинет, сложную базу клиентов и десятки полей. Для моей рутины важнее быстро выбрать процедуру, увидеть свободное время и не создать две записи на один интервал.
Как выбрать программу для записи клиентов по времени бесплатно?
Если тебе нужна программа для записи клиентов по времени бесплатно, сначала сравни готовые сервисы по тарифу, числу сотрудников, уведомлениям и ограничениям. Такой сервис выигрывает на старте: там уже есть интерфейс, настройки и поддержка. Если стандартной записи достаточно, это разумный путь.
Но у небольшого дела часто есть одна особенность, ради которой вся схема и нужна. Для меня это разная длительность первого и повторного визита. У другого владельца может быть обязательная пауза между процедурами, отдельное время на подготовку кабинета или запрет на запись в определенные интервалы.
В покупном сервисе такое правило либо уже предусмотрено, либо его приходится искать в настройках. Иногда оно доступно только на другом тарифе. Иногда надо писать в поддержку и ждать, пока станет понятно, можно ли вообще так сделать.
В своей сборке я описываю правило обычными словами. Помощник задает вопросы, уточняет, где оно применяется, и меняет нужную часть проекта. Я не обещаю, что результат всегда получается с первого раза. Его всё равно надо проверить на телефоне, в календаре и в журнале заявок.
Для меня важна возможность быстро менять правило первого визита без ожидания поддержки, а не внешний вид формы.
При этом своя запись не бесплатна в полном смысле. При выбранной платной модели помощника подписка становится регулярным расходом. Я сам проверяю ошибки, доступы, уведомления и согласия. Если нет готовности иногда разбираться с такими вещами, сервис может оказаться спокойнее.
Из чего состоит форма записи на сайт?
Страница с формой
Коротко: Страница принимает данные клиента и передает их серверной части для проверки и сохранения.
Клиент видит обычную страницу. На ней нет исходного кода и технических настроек. Есть выбор процедуры, тип визита, дата, свободное время, имя, телефон, почта, комментарий и ссылка на политику обработки персональных данных. Если для обработки заявки и связи по записи требуется согласие, форма отдельно фиксирует его текст, дату и способ получения.
Страница может быть отдельной ссылкой или встроенным блоком на существующем сайте. Apps Script способен отдать HTML-страницу через функцию doGet, а принять отправленную форму через doPost.
Google рекомендует представлять скрипт для планирования встреч как веб-приложение, чтобы пользователи обращались к нему напрямую из браузера. Подробнее смотри в разделе Web Apps.
- Google for Developers, Web Apps
Серверная часть
Коротко: Серверная часть проверяет поля, определяет длительность визита и обращается к календарю.
Я описываю серверную часть как закрытую часть проекта: она принимает данные формы, проверяет обязательные поля, определяет длительность процедуры и обращается к календарю.
В этой схеме за серверную часть отвечает Google Apps Script. Для маленькой записи отдельный хостинг можно не покупать. Скрипт публикуется как веб-приложение и получает собственный URL.
Календарь
Коротко: Календарь хранит занятые интервалы и повторно проверяется перед созданием записи.
Google Calendar хранит занятые интервалы. Скрипт запрашивает занятость за нужный период, вычитает ее из рабочего графика и оставляет свободные окна.
Для первого визита длительность берется из одного правила. Для повторного клиента используется другое стандартное окно. Данные о занятости не должны жить только в интерфейсе формы. Перед сохранением скрипт обязан проверить слот еще раз.
Скрипт спрашивает Google Calendar, какие промежутки уже заняты, и получает для каждого начало и конец. Один запрос проверяет максимум 50 календарей, согласно документации Calendar API. Для одного владельца этого достаточно, а при большом количестве специалистов запросы придется разделять.
Таблица заявок
Коротко: Google Таблицы хранят журнал заявок, доступный владельцу, но закрытый для посетителей.
Google Таблицы становятся журналом. В новую строку можно записать дату создания, имя клиента, телефон, почту, процедуру, комментарий, статус и идентификатор события календаря. Если нужно освежить базовые возможности таблиц, смотри разбор Google Таблиц.
Таблицу не надо открывать для всех посетителей. Доступ к ней остается у владельца. Клиент отправляет форму, а не пишет прямо в таблицу.
Уведомления
Коротко: Уведомления подключаются после сохранения заявки в календаре и таблице.
После проверки сохранения можно добавить письмо клиенту с датой, временем, процедурой и контактами, отдельное письмо владельцу и сигнал о новой записи в Telegram. До этого заявка должна проверяться в календаре и Google Таблице.
Токен Telegram-бота не помещается в HTML-код. Его надо хранить только на серверной стороне Apps Script или в другом закрытом месте. Полноценную схему безопасности из этого правила строить не стоит, но сам токен нельзя оставлять на открытой странице.
Сколько стоит собрать запись самостоятельно?
VS Code нужен как рабочая папка. Слева видны файлы проекта, справа их содержимое. Помощник может создавать и менять код по описанию задачи, но результат все равно нужно проверять и при необходимости править.
Claude Code можно запускать из поддерживаемого рабочего окружения. Я описываю задачу обычными словами, помощник создает файлы, меняет их и объясняет результат. Подробный порядок работы с ним разобран в инструкции по Claude Code. После первоначальной настройки папки следующую задачу можно описать помощнику и попросить изменить проект, но зависимости, доступы и настройки иногда придется обновлять отдельно.
У Claude Pro есть общий лимит использования для чата и Claude Code. Фиксированного числа сообщений нет: расход зависит от размера диалога, модели, сложности задачи и количества файлов. После длинного разговора часть лимита уходит на повторную передачу истории проекта.
В России официальная доступность подписки и оплата российской картой не подтверждены. Поэтому рублевая сумма ниже не является российским тарифом Anthropic. Это пересчет официальной цены в доллары по курсу ЦБ.
| Расход | Сумма | Что означает |
|---|---|---|
| VS Code | не привожу | Редактор проекта |
| Claude Pro | $20 в месяц | Платная подписка, Claude Code включен |
| Пересчет Claude Pro | не привожу | Рублёвый эквивалент зависит от курса и способа оплаты |
| Внешний хостинг | не включаю | В этой статье домен и хостинг не рассчитываются |
| Домен | не включаю | В этой статье домен не рассчитывается |
Claude Code доступен в Pro и других поддерживаемых платных планах; при использовании API или usage credits может возникать отдельная оплата. Отдельные обращения программы к модели через API и дополнительный оплачиваемый запас таких обращений не входят в Claude Pro и могут оплачиваться отдельно.
Практикум «Старт»
Три дня живой практики: от идеи до работающего проекта по ссылке
2 000 ₽старт 5 августа, 18:00 МСК
Как сделать онлайн запись клиентов шаг за шагом?

Опиши задачу словами.
Создай папку проекта и открой ее в VS Code. Сначала не проси готовую программу. Объясни помощнику, как проходит процедура, чем отличается первый визит от повторного клиента и какие сообщения сейчас приходится обрабатывать вручную.
Разобрать запись до начала сборкиУ меня массажный кабинет. Я работаю по предварительной записи и сам провожу процедуру, отвечаю на сообщения и организую день. Хочу форму записи на сайт: клиент выбирает процедуру, указывает, первый это визит или повторный, выбирает свободную дату и время, оставляет имя, телефон, почту и комментарий, а также видит ссылку на политику обработки персональных данных. Основание обработки для этой цели заранее определяет оператор; если применимым основанием является согласие, сохраняй его текст, дату и способ получения отдельно от рекламного согласия. Сохраняй версию текста согласия, дату и способ его получения. Для первого визита нужно отдельное более длинное окно на короткий опрос и подготовку. Для повторного клиента нужна стандартная длительность процедуры. Пока не пиши код. Разбери задачу простыми словами, перечисли данные, части решения и порядок сборки. Задай вопросы, если чего-то не хватает. Сохрани план в файл plan.md. Если понадобятся дополнительные программы или доступы, скажи об этом отдельно.
В ответ помощник должен показать схему и задать уточняющие вопросы. Проверь, что он не смешал первый визит с повторной процедурой и не добавил несуществующие услуги.
Задай процедуры и длительности.
Составь список только из тех процедур, которые реально доступны для записи. Отдельно зафиксируй два типа визита. Это правило лучше определить до создания календаря.
Создать список процедур и правил времениСоставь конфигурацию записи для массажного кабинета. Процедуры: массаж спины, общий массаж и расслабляющая процедура. Для каждого пункта храни название и стандартную длительность. Добавь два типа визита: первый визит и повторный клиент. Для первого визита добавляй отдельное время на короткий опрос и подготовку, для повторного клиента используй только стандартное окно процедуры. Сделай понятный файл настроек, который я смогу открыть глазами и изменить обычным текстом. Не добавляй медицинские диагнозы, расценки и поля, которых я не перечислил. Перед изменением файлов покажи их список.
Проверь, что помощник создал файл настроек и объяснил, где менять названия и время. Важно, чтобы длительность первого визита не была спрятана в нескольких местах проекта.
Подключи рабочий график.
Теперь опиши дни и часы, когда запись вообще допустима. Добавь перерывы и закрытые интервалы, если они есть в твоей обычной работе.
Настроить рабочий графикДобавь в проект рабочий график массажного кабинета. Свободные окна должны строиться только внутри заданных рабочих периодов. Учитывай выбранную процедуру, тип визита и его длительность. Не показывай интервалы, которые пересекаются с уже занятыми событиями Google Calendar. Добавь настройку часового пояса кабинета и показывай его клиенту рядом со временем. Не угадывай рабочие часы и перерывы: сначала задай мне вопросы и дождись ответов. После настройки выведи пример свободных окон на один день для первого визита и для повторного клиента.
Попроси помощника показать расчет интервалов и сверь его с обычным расписанием. Если время отображается иначе на телефоне, проблему надо исправлять до подключения заявок.
Собери форму и календарь.
На этом шаге появляется первый результат, который можно открыть в браузере. Форма должна показывать только те интервалы, которые подходят выбранной процедуре и типу визита.
Собрать форму записи со свободным временемСоздай страницу формы записи для массажного кабинета. Поля: процедура, тип визита (первый визит или повторный клиент), дата, свободное время, имя, телефон, почта, комментарий и ссылка на политику обработки данных для заявки. Основание обработки для этой цели заранее определи как оператор; если требуется согласие, добавь отдельный чекбокс согласия на обработку данных с фиксацией его текста, даты и способа получения и не объединяй его с рекламным. Рекламное согласие не добавляй и не объединяй с этим чекбоксом. После выбора процедуры и типа визита показывай только подходящие свободные окна из рабочего графика. Свободное время проверяй по Google Calendar. Перед сохранением заявки повтори проверку, потому что выбранный интервал мог занять другой человек. Если данные не загрузились или календарь вернул ошибку, не показывай пустой список как будто всё свободно: выведи понятное сообщение и контакт кабинета. Не добавляй регистрацию и личный кабинет. Подписи сделай на русском, страницу удобной для телефона.
Попроси помощника подготовить HTML-страницу, серверную часть и инструкции по доступу к календарю, затем проверь результат. Открой форму с телефона и проверь, что первый визит и повторный клиент показывают разные окна. Такой способ сборки называют вайб-кодингом.
Сохрани заявку в таблицу.
После отправки форма должна записать данные в журнал и показать сообщение об успехе только после успешного сохранения. Таблица помогает проверить, что запись действительно сохранилась.
Добавить журнал заявок в Google ТаблицеПодключи Google Таблицу как журнал записи массажного кабинета. После повторной проверки свободного окна добавляй новую строку с датой и временем создания, датой и временем процедуры, типом визита, процедурой, именем клиента, телефоном, почтой, комментарием, статусом и идентификатором события Google Calendar. Если для этой цели требуется согласие, сохраняй отдельно версию его текста, дату и способ получения. Статус новой записи ставь «новая». Не открывай таблицу для публичного редактирования. Покажи мне, какие разрешения потребуются и где будет храниться идентификатор таблицы. Если сохранение в таблицу не удалось, не показывай клиенту успешную запись и запиши техническую ошибку в отдельный журнал.
Помощник добавит запись строки и соединит ее с созданным событием календаря. Сделай тестовую заявку и проверь строку руками. Если ее нет, запись нельзя считать рабочей.
Добавь письма и Telegram.
Уведомления подключай после того, как форма, календарь и таблица работают отдельно. Иначе непонятно, на каком участке возник сбой.
Подключить уведомления о новой записиДобавь два email-уведомления через Google Apps Script MailApp. Владельцу отправляй сообщение с именем клиента, процедурой, типом визита, датой, временем, телефоном и комментарием. Клиенту отправляй подтверждение с процедурой, датой, временем, часовым поясом и контактами кабинета. После этого добавь уведомление владельцу в Telegram через Bot API с теми же основными данными. Токен Telegram не помещай в HTML и не записывай в открытый файл: храни его только на серверной стороне в настройках скрипта. Если письмо или Telegram не отправились, заявка всё равно должна остаться в Google Таблице, а ошибка должна попасть в журнал.
В ответ помощник объяснит, какие разрешения нужны для почты и куда внести настройки бота. Проверь доставку с реального телефона, а не только появление сообщения на странице.
Защити двойную запись.
Повторная проверка слота сама по себе не гарантирует защиту, если два человека нажали кнопку почти одновременно. Попроси помощника добавить серверную блокировку и уникальный ключ интервала, то есть метку из календаря, начала и конца времени. Ключ помогает обнаружить повторную заявку, а защита от дубля требует повторной проверки и сохранения события с блокировкой, чтобы второй запрос не прошел одновременно с первым.
Защитить запись от одновременного нажатияПроверь сценарий, когда два клиента почти одновременно отправляют одну и ту же процедуру, дату и время. Добавь серверную защиту: перед созданием события повторно проверь занятость, установи блокировку на время проверки и сохранения, а для записи используй уникальный ключ из ресурса, начала и конца интервала. Повторный запрос с тем же ключом не должен создавать второе событие и вторую строку в таблице. Кнопку отправки отключай после первого нажатия, но не полагайся только на это. Добавь понятное сообщение, если время уже занято. Создай тест, который проверяет две одновременные заявки.
Помощник должен изменить именно серверную часть и показать тест. Если он предлагает только отключать кнопку, попроси продолжить: клиент может нажать дважды, открыть две вкладки или отправить запрос повторно.
[!warning] Свободное окно не равно гарантированная запись Проверка календаря перед показом времени не защищает от двух одновременных отправок. При корректной серверной реализации нужны повторная проверка перед сохранением, блокировка и защита от повторного запроса, чтобы одна попытка не создавала две записи.
Проверь и опубликуй форму.
Не вставляй ссылку на сайт до проверки с телефона, занятого интервала, первого визита, письма, Telegram и повторного нажатия.
Провести проверку перед публикациейПроверь всю запись массажного кабинета по чек-листу. Протестируй первый визит и повторного клиента с разными длительностями, занятый интервал в Google Calendar, свободное окно, запись в Google Таблицу, письмо владельцу, письмо клиенту, Telegram-уведомление, неверный часовой пояс, повторное нажатие кнопки и одновременную отправку двух заявок. Для каждого теста покажи ожидаемый результат и фактический результат. Если что-то не работает, сначала объясни причину простыми словами, затем предложи минимальное исправление. Не переписывай рабочие части без необходимости. После успешной проверки дай короткую инструкцию, как опубликовать форму и вставить ссылку или iframe на страницу сайта.
Проверь, что список проверок и найденных проблем появился. Только после этого публикуй форму. Не проси помощника сделать сразу весь сайт: по частям легче понять, где ошибка, и не потерять рабочую запись.
После первого результата стало понятно, что помощник не заменяет проверку. Он быстро собирает части, но не знает сам, как именно проходит мой день, если я этого не описал. Чем точнее правило первого визита и рабочие интервалы, тем меньше переделок.
Если нужна помощь именно с такой сборкой, посмотри практикум по вайб-кодингу для предпринимателей, где проект собирают словами и проверяют результат.
Что появится в папке после сборки?
HTML-страница
Коротко: HTML-страница показывает клиенту поля формы и не содержит секретных токенов.
Это внешний вид формы. В ней находятся поля процедуры, типа визита, даты, времени и контактов. Клиент открывает ее в браузере.
Если страница размещается отдельно, на сайт можно поставить ссылку. Если нужен встроенный вид, сначала проверь, разрешает ли платформа сайта iframe. Если нет, используй обычную ссылку или другой способ вставки, который поддерживает эта платформа. Сам HTML не должен содержать токен Telegram и другие секреты.
Серверная часть
Коротко: Apps Script принимает заявку, проверяет окно, записывает данные и отправляет уведомления.
Apps Script принимает отправку, обращается к календарю, записывает строку в таблицу и отправляет уведомления. Здесь лежит логика проверки свободного окна.
В проекте могут быть отдельные файлы для приема формы, календаря, таблицы и сообщений. Не обязательно разбираться в каждой строке. Достаточно понимать назначение файлов и просить помощника перед изменением перечислять, что он собирается трогать.
Настройки
Коротко: В настройках хранятся процедуры, график, часовой пояс и идентификаторы сервисов без секретных ключей.
В настройках хранятся названия процедур, длительности, рабочие часы, часовой пояс, идентификатор календаря, идентификатор таблицы и адреса для уведомлений.
Копию файла с обычными настройками сохранить можно. Токены и закрытые ключи в такую копию включать нельзя. Для секретов используй закрытые свойства Apps Script и попроси помощника объяснить, где они находятся.
Таблица и календарь
Коротко: Таблица хранит журнал, а календарь показывает занятость; рабочая запись должна попасть в оба сервиса.
Google Таблица хранит журнал. Google Calendar показывает занятость и созданные события. Это две разные части. Если запись есть только в таблице, календарь может показать окно свободным. Если событие появилось только в календаре, в журнале не будет полноценной карточки клиента.
После сборки сделай резервную копию таблицы и сохрани описание колонок. Рабочий код без необходимости не меняй. Сначала попроси помощника объяснить причину и список файлов, потом соглашайся на правку.
Практикум «Старт»
Три дня живой практики: от идеи до работающего проекта по ссылке
2 000 ₽старт 5 августа, 18:00 МСК
Что делать, если свободное время показывается неправильно?

Календарь не видит занятое событие
Коротко: Сначала проверь идентификатор календаря, права, диапазон запроса и часовой пояс.
Если в форме видно свободное время, хотя в Google Calendar уже стоит событие, проверь идентификатор календаря, права доступа и часовой пояс. В выбранном решении календарь должен быть единственным ориентиром для проверки занятости.
В форме массажного кабинета показывается свободное время, хотя в Google Calendar уже есть занятое событие. Найди причину по коду и настройкам: проверь идентификатор календаря, права доступа, диапазон запроса, часовой пояс и преобразование начала и конца события. Добавь диагностический журнал с запрошенным периодом и полученным массивом busy, но не показывай клиентам секреты. Создай отдельный тест: занять один интервал вручную в календаре, обновить форму и убедиться, что этот интервал исчезает. Если календарь недоступен, форма должна показать «время временно недоступно», а не весь день как свободный.
Google отдельно описывает ответ Freebusy: query как информацию о занятых интервалах календарей. Сам факт подключенной синхронизации еще не доказывает, что форма читает нужный календарь.
Двойной клик создает две записи
Коротко: От двойной записи защищают серверная блокировка, уникальный ключ и повторная проверка слота.
Отключение кнопки помогает от случайного повторного нажатия, но не закрывает проблему полностью. Два запроса могут прийти на сервер почти одновременно. Нужны уникальный ключ интервала, блокировка и повторная проверка.
При отправке формы один клиент иногда получает две одинаковые записи. Найди все места, где создаются событие Google Calendar и строка Google Таблицы. Сделай отправку повторяемой безопасно: добавь уникальный ключ процедуры, начала и конца интервала, серверную блокировку на проверку и сохранение, проверку существующего ключа и отключение кнопки после нажатия. Напиши тест для двойного клика и для двух почти одновременных запросов. Сохрани одну запись и покажи клиенту одно понятное подтверждение.
Если помощник предлагает только скрыть кнопку, попроси проверить сервер. Повторная отправка может прийти из двух вкладок или из-за повторного запроса браузера.
Время съезжает на час
Коротко: Несовпадение времени обычно исправляется единой моделью часовых поясов во всех компонентах.
Причина обычно в смешении часовых поясов. Один из распространенных вариантов снижения расхождений: хранить момент в UTC, то есть в едином мировом формате, а клиенту показывать время часового пояса кабинета. Выбери одну модель времени и последовательно применяй ее в форме, календаре и письмах. В письме указывай этот часовой пояс словами.
В форме массажного кабинета клиент выбирает одно время, а в Google Calendar или письме появляется другое. Проверь, в каком часовом поясе создаются дата и время, как они передаются в Calendar API и как форматируются для клиента. Храни внутреннее значение в UTC, показывай время в часовом поясе кабинета и явно напиши его в форме и письме. Добавь тест записи из другого региона, переноса записи и границы суток. Не меняй рабочие часы без моего подтверждения.
Проверь отдельно дату, а не только часы. При ошибке часового пояса запись может уехать и на соседний день.
Письмо не приходит
Коротко: Если письмо не пришло, проверь заявку в таблице, настройки MailApp, адрес и дневную квоту.
Письмо не должно быть единственным местом хранения. Сначала найди заявку в Google Таблице, потом проверь настройки MailApp, адрес получателя и остаток дневной квоты.
После отправки формы заявка появляется в Google Таблице, но письмо владельцу или клиенту не приходит. Проверь адрес получателя, тему, тело письма, разрешение MailApp, обработку исключений и остаток дневной квоты. Не удаляй сохраненную заявку из таблицы при ошибке отправки. Добавь в журнал статус уведомления и понятное сообщение владельцу, если письмо не отправлено. Подготовь тестовую заявку с реального телефона и покажи, что именно проверять в журналах Apps Script.
Для обычного потребительского аккаунта Google Apps Script указывает лимит 100 получателей писем в день, для Google Workspace - 1 500. В минимальном сценарии письмо владельцу и письмо клиенту могут считаться двумя получателями.
API возвращает ошибку
Коротко: Ошибки 403 и 429 требуют уменьшить частоту запросов, добавить повтор с паузой и не считать пустой ответ свободным днем.
При частых запросах Google Calendar API может вернуть 403 usageLimits или 429 usageLimits. Такое бывает, если запрашивать календарь заново при каждом движении мыши или каждом изменении поля.
При выборе даты форма записи получает ошибку 403 usageLimits, 429 usageLimits или сообщение о слишком частых обращениях к Calendar. Найди, сколько запросов делает страница и сервер. Не запрашивай календарь при каждом движении мыши. Обновляй свободные окна после выбора даты, разреши ненадолго использовать недавно полученный список окон, повторяй запрос с увеличивающейся паузой и показывай понятное сообщение при недоступности календаря. Пустой список не считай признаком свободного дня. Запиши ошибку в журнал без показа технических данных клиенту.
Для меня проблема была не в красивой форме, а в двойной записи: если слот попадет двум людям, календарю я уже не доверяю. Поэтому проверка в момент сохранения и блокировка важнее внешнего вида календаря.
Что выгоднее: своя запись, сервис или переписка?
| Вариант | Подтвержденная стоимость | Сильная сторона | Ограничение |
|---|---|---|---|
| Своя сборка | Claude Pro $20 в месяц | Свои процедуры, длительности и правила | Ошибки, доступы и проверка остаются на владельце |
| DIKIDI | Условия нужно проверить на официальном тарифе | Можно сравнить готовый сценарий | Возможности зависят от условий сервиса |
| «Записли» | Условия нужно проверить на официальном тарифе | Готовая запись | Правила меняются в пределах сервиса |
| Rubitime Start | Цена зависит от актуального тарифа | Готовый сервис записи | Нет полной свободы своей логики |
| Digital | Цена зависит от актуального тарифа и периода оплаты | Более широкий готовый сценарий | Условия нужно сверять перед выбором |
| YCLIENTS | Цена зависит от актуального тарифа | Готовая система для записи | Сложные особенности зависят от тарифа и настроек |
| Подрядчик | Стоимость нужно запрашивать по техническому заданию | Работу можно передать специалисту | Изменения снова требуют обращения и оплаты |
| Переписка и звонки | Отдельной подписки нет | Не надо ничего внедрять | Перестановки, напоминания и проверка окон вручную |
Условия готовых сервисов и разработки меняются, поэтому перед выбором проверь актуальный тариф и состав функций на сайте поставщика. Стоимость домена, хостинга и Yandex Cloud Functions после бесплатного лимита в сравнение не включаю: точной подтвержденной суммы для этой схемы нет.
Свою сборку я бы не выбирал при сложной сетке специалистов, нескольких филиалах, высокой нагрузке или отсутствии готовности проверять ошибки и доступы. В таком случае готовый сервис или подрядчик может стоить спокойствия меньше.
Своя запись оправдана, когда правило связано с самой процедурой. Первый визит занимает отдельное окно, повторный клиент идет по стандартному времени, а форма должна учитывать именно эту разницу. Тут гибкость важнее универсального списка функций.
Что сделать сегодня, если ты не разбираешься в технологиях?
- Запиши правило первого визита и отдельно правило повторной процедуры.
- Подготовь календарь с понятным часовым поясом.
- Создай Google Таблицу для журнала заявок.
- Поставь VS Code и Claude Code.
- Попроси помощника собрать минимальную форму без лишних функций.
- Проведи тест с телефона на свободном и занятом времени.
- Проверь строку в таблице, событие в календаре, письмо и Telegram.
- Опубликуй ссылку или встроенную форму на сайте.
После установки инструментов не возвращайся к ним без необходимости. Дальше работай через описание задачи и проверку результата. Если помощник просит доступ или дополнительную установку, он должен объяснить, зачем это требуется.
Вопросы и ответы
Вопросы и ответы
Как создать онлайн запись для клиента на сайте?
Создай форму с выбором процедуры, типа визита, даты и свободного времени. Перед сохранением заявки повторно проверь календарь, запиши данные в Google Таблицу и отправь подтверждение клиенту. Страницу можно опубликовать через Apps Script или вставить на сайт ссылкой или iframe.
Как получить ссылка на запись клиентов?
Фраза «ссылка на запись клиентов» обозначает адрес формы, который можно разместить на кнопке сайта или отправить сообщением. Чтобы получить ссылку на запись клиентов, опубликуй форму как веб-приложение Apps Script и используй выданный URL. Размести его на кнопке сайта, в профиле или в сообщении. Перед публикацией проверь форму с телефона и убедись, что занятой интервал не отображается свободным.
Какие формы для записи клиентов подойдут для сайта?
Подойдет форма, в которой есть процедура, тип визита, дата, свободное время и контакты клиента. Для этой схемы форма соединяется с Apps Script, Google Calendar, Google Таблицами, почтой и Telegram. Простая форма без проверки календаря не решает задачу свободных окон.
Как настроить онлайн запись клиентов на услуги?
Сначала занеси процедуры и длительности. Затем задай рабочий график, подключи календарь занятости, добавь таблицу заявок и уведомления. Для первого визита сделай отдельное правило времени, а для повторного клиента оставь стандартное окно процедуры.
Как сделать автоматическую запись клиентов?
Автоматическая запись клиентов работает через серверную часть, которая принимает форму, проверяет календарь, создает событие и записывает заявку в таблицу. Уведомление отправляется после сохранения. Проверку свободного окна надо выполнять еще раз перед созданием события, чтобы избежать двойной записи.
Нужна ли система онлайн записи клиентов для массажного кабинета?
Она нужна, если значительная часть дня уходит на сообщения, уточнение длительности и перестановку записей. Если клиентов немного и расписание легко вести вручную, готовая система может быть избыточной. В собственной сборке отдельно учитывается правило первого визита.
Как добавить форму онлайн записи на сайт?
Собери HTML-страницу и опубликуй серверную часть Apps Script. Затем размести на сайте ссылку на форму или встроенный iframe. Не помещай в HTML токен Telegram и другие секреты. Сначала проверь отправку заявки, таблицу, календарь и уведомления.
Как работает онлайн календарь для записи клиентов?
Онлайн календарь для записи клиентов берет рабочие интервалы и вычитает занятые события Google Calendar. Оставшиеся окна показываются в форме. Перед сохранением заявка повторно проверяет выбранное время. Если API временно недоступен, форма должна показать ошибку, а не пустой день как свободный.
Источники
- Google for Developers: Web Apps
- Google Calendar API: Freebusy query
- Google Apps Script: класс Sheet
- Google Apps Script: класс MailApp
- Google Apps Script: Installable Triggers
- Google Apps Script: Quotas for Google Services
- QForm: форма записи на прием для сайта
- Easy!Appointments: календарь не видит занятые события
- Easy!Appointments: проблема часового пояса
- Anthropic: Plans & Pricing
- Anthropic Help Center: Models, usage, and limits in Claude Code
- Anthropic Help Center: Manage usage credits
- Anthropic Help Center: Paid plan billing FAQs
- Банк России: официальный курс валют на 6 августа 2026 года
- Федеральный закон «О персональных данных», статья 9
Это собирательная история выпускников практикума, а не рассказ одного человека: так эта работа устроена в большинстве таких дел.
Практикум «Старт»
Три дня живой практики: от идеи до работающего проекта по ссылке
2 000 ₽старт 5 августа, 18:00 МСК

