Автоматизация парусной базы на Google Таблицах
Администраторы парусной базы тратили около 4 часов в день на то, чтобы перепечатать заявки, уследить за расписанием и вечером посчитать зарплаты. Теперь расписание сортирует себя само, часы и выплаты считаются из него, а расходы, зарплаты и доходы сходятся в P&L директора.

Парусная база «Сила ветра» на Пироговском водохранилище: около 15 яхт и 20-25 шкиперов. Летом в субботу и воскресенье из бухты выходит 90-95% парка, в будни 65-70%, к вечеру всплески. Администраторы каждый день ведут расписание выходов на воду, раздают лодки и шкиперов, а вечером считают, кому сколько заплатить.
Это история не про аналитику и не про AI, а про автоматизацию. Только Google Таблицы и немного Apps Script, построенные поверх того, как база уже работала.
Заявки перепечатывали руками каждый день
Я попал на базу случайно: друзья позвали покататься под парусом и на барбекю. На закате все собрались у костра, кроме администратора. Она с калькулятором и расписанием считала зарплату инструкторов за день, сумму часов «на воде». Так было каждый день, потому что кто-то когда-то так придумал.
Заказы и оплату принимает сайт головной компании «Сила ветра». Передать заявки оттуда на базу нельзя, такой админки нет. Поэтому несколько администраторов каждый день перепечатывали заявки в самодельную таблицу расписания. Какие лодки свободны, кто следующий и кто когда стартует, по ней видно не было. Базу контролировали скроллингом, остальное решали устно, по телефону и долгими согласованиями.
На всё это уходило около 4 часов человека в день: внести заявки, следить за таблицей, вечером посчитать часы и зарплаты. Один вечерний расчёт занимал до 1-2 часов. Директор базы каждый день ещё 30-40 минут сводил P&L руками из того, что подготовили администраторы, а часть оплат картами жила в отдельной табличке.
Время было не главной бедой. Отмена выхода ломала расчёты, и данным перестали доверять. Про ошибки честно так:
Не могу сказать, что регулярно ошибались. Нет, мы ошибались, но цена вот этой точности была крайне высокая.

Узнаёшь себя?
- 01Заявки приходят в одной системе, а работаешь ты в другой, и переносишь их руками.
- 02Чтобы понять, какая лодка свободна и кто стартует следующим, листаешь таблицу или звонишь.
- 03Вечером, когда все отдыхают, кто-то ещё час-два считает часы и зарплаты.
- 04Одна отмена ломает расчёты, и цифрам в таблице уже не веришь.
Ниже по порядку, как каждую из этих проблем закрыли.
Процессы держались на руках и устных договорённостях
База работает не первый год, и большая часть процессов была организована на руках, с инструкциями, которые передавались устно. Цельной картины, откуда берутся данные и куда они идут, не было ни у кого.
Первую встречу с директором мы провели в офисе, с ноутбуком: какие есть источники, какие задачи у каждой стороны, что хотим получить в итоге. Требования и процесс приходилось доставать из директора и перебарывать страхи. Образ будущего был только у меня, а показать его можно было лишь после базовой версии.
После созвона в Zoom я нарисовал первую карту: расписание, расходная часть, люди, техника, расходники, P&L. На ней честно висит зелёный стикер «Пока не понятно как с этим работать». Дальше разложил задачи по пяти направлениям и вёл их на доске: сбор информации, бухгалтерия, расписание, табличка с зарплатами, дашборд управления. Вышел небольшой IT-проект.


Новая запись уезжала в подвал таблицы
Администраторы показали, как работают с расписанием. Данные растут вниз, и актуальное естественным образом скатывается в подвал, поэтому все постоянно скроллят. Дни разделены пустыми строками, часть ячеек раскрашена руками. Дата и время записаны в разных форматах, имена и тарифы по-разному, часть полей пустая. В насыщенный день легко потеряться: что сейчас на воде, кто готовится, кто скоро вернётся. Чтобы ничего не сломали, доступ был только у администраторов, а шкиперы узнавали расписание устно.
Первой идеей была отдельная техническая таблица, которую заполняют через Google Формы, и витрина для людей. Она плохо пережила правки: запись в расписании меняется много раз за день, а форму на каждую правку не заполнишь.
Главный дефект прежнего процесса был в том, что таблица росла вниз и люди записывали новое тоже вниз. Поэтому я проложил для ввода маршрут. Строка ввода закреплена первой, сразу под заголовками: её легко найти, и она никуда не убегает. Человек пишет заявку в эту строку и нажимает галочку, а скрипт переносит запись в расписание туда, куда нужно, и очищает строку. В строке настроены типы данных и проверка значений, лодки, шкиперы и продукты выбираются из справочников выпадающими списками. Кривые значения типы и проверка не пропускают, поэтому данные стали чистыми.
Теперь в расписании пишут только в одну строку. Новый сотрудник осваивает это за считанные часы, ввод стал привычной частью работы.




Расписание должно было сортировать себя само
Строка ввода наверху отняла у таблицы обычные сортировки. Администраторы заносят выходы на несколько дней вперёд, время и даты сдвигаются, и просить людей каждый раз пересортировывать всё расписание значит ждать поломок.
Порядок строк считает формула из даты и времени выхода, а прошедшим выходам к ключу прибавляется большое число. Наверху стоят ближайшие выходы по времени, прошедшие уезжают вниз отдельным блоком. Таблица пересортировывается сама после каждой правки даты или времени, а ночью контрольный прогон наводит порядок к утру.

Этот приём стал скелетом всей системы. На него потом навешивались листы, цвета, фильтры, метрики, зарплаты и каталог сотрудников.
Что сейчас на воде, по таблице было не понять
Цвет показывает время до старта: за 30, 15 и 5 минут, и отдельно лодку, которая уже на воде. Даты красятся так же: сегодня, завтра, послезавтра, прошедшие. Администратор видит день с одного взгляда, без скролла.
Шкиперам открыты отдельные листы «Сегодня», «Завтра и послезавтра» и «Посмотреть своё расписание». Каждый видит свой график сам, без звонка администратору и без риска сломать рабочую таблицу.
Зарплату считали руками каждый вечер
Тариф выхода зависит от его типа: покатать людей, спортивный яхтинг, гонка. От типа яхты зависят бонусы шкиперу. Ещё бывают соревнования со своим парком яхт, их тоже надо учесть.
Теперь часы на воде за период собираются из расписания. Администратор подтверждает их галочками, и скрипт переносит выплаты в отдельную таблицу. Там формулы сами добавляют доплату за корпоративы и считают сумму с налогом по типу оформления: самозанятый, ИП или наличные. Кнопки сделаны галочками, поэтому работают и с телефона.
P&L директор сводил руками
База ничего не продаёт сама: она исполняет услуги, уже оплаченные в головной компании. Директор отчитывается за траты, на трафик и выручку он не влияет. Поэтому от P&L нужны были учёт и контроль: сколько выходов на воду за день, сколько потрачено, сколько пришло.
Расходы сотрудники вносят через Google Формы. Зарплаты техников, администраторов и инструкторов приходят из таблицы выплат, доходы по типам продуктов из бухгалтерии. Всё сходится по дате в P&L директора, а прошедшие выходы скрипт уносит в архив, чтобы рабочее расписание оставалось коротким.
Сервер и отдельное приложение не понадобились
Первый вопрос подкованного человека: взять данные из API сайта и закрыть задачу. Но кабинет головной компании самописный, выгрузки в нём нет, и интеграцию с ним в головной компании сделать не смогли. Можно было бы поднять сервер и написать своё приложение для расписания. Только поддерживать его на базе некому.
Поэтому систему я построил поверх того, что уже было: администраторы и так работали в Google Таблице. Остались таблицы, справочники, формулы и немного Apps Script там, где без кнопки не обойтись.

Из чего состоит система:
- Расписание. Строка ввода наверху, сортировка сама собой, цвет по времени и датам. В нём работают около 9 человек.
- Справочники. Лодки, шкиперы и продукты на одном листе, неактивных можно выключить, не удаляя.
- Листы для шкиперов. Сегодня, завтра и послезавтра, своё расписание.
- Зарплаты. Часы из расписания, подтверждение галочками, выплаты с доплатами и налогом в отдельной таблице.
- Расходы. Google Формы, их заполняют около 4 человек.
- P&L директора. Расходы, зарплаты и доходы по дате.
Небольшое отступление. Первую схему дашбордов в Google Таблицах я нарисовал в 2021 году, задолго до парусной базы. Это не схема базы, но с неё всё началось.

К началу сезона база жила по новому расписанию
Около 20 апреля сложилось, как будет устроена система. От первой встречи до запуска прошло 4-6 недель, и к сезону база уже работала по новому расписанию. Сотрудники прошли обучение, администраторы быстро освоились и сами начали предлагать улучшения. Ещё месяц ушёл на доводку, к середине июня система была законченной. Дальше шли итерации по просьбам администраторов и директора.
Результат
от первой встречи до сезона на новом расписании
новый сотрудник осваивает ввод в расписание, счёт идёт на считанные часы
работают в расписании, ещё около 4 вносят расходы через формы
только Google Таблицы и немного Apps Script
система живёт до сих пор: следующие разработчики дописали подсветку конфликтов, каркас прежний
решение продано ещё одной парусной базе
Расписанию стало можно доверять. Хаоса и мусорного времени стало меньше, контроля больше. Скелет из расписания оказался системообразующим: на него наросли хозяйство, ресурсы, финансы и учёт расходов. Подсветку конфликтов добавили уже без меня: если человек стоит дважды на одной лодке или выходы пересекаются по времени, строка горит фиолетовым.
Интеграцию с сайтом головной компании там сделать не смогли, поэтому заявки по-прежнему вносят руками. Система построена вокруг этого ручного ввода: одна строка, типы, проверка значений, галочка, и скрипт раскладывает запись по месту. Ввод остался ручным, но перестал съедать время команды.
Как теперь выглядит день на базе
Администратор вносит заявку в верхнюю строку, и она сама встаёт на своё место в расписании. Кто на воде, кто готовится, кто стартует через 15 минут, видно по цвету. Шкипер смотрит свой график на отдельном листе и не звонит администратору. Вечером часы за период подтверждаются галочками, а выплаты считает таблица. Директор видит расходы, зарплаты и доходы по дням в одном P&L.
Когда перестали ползти, начали ходить и ходить куда-то, а не просто выживать.
Посмотри расписание (демо)
Настоящее расписание базы показывать нельзя, в нём живые люди. Поэтому демо на вымышленных данных: инструкторы, экипажи и продукты обезличены.
Внутри та же структура: рабочее расписание со строкой ввода, листы «Сегодня», «Завтра и послезавтра», «Посмотреть своё расписание» и справочники в «Админке».

Если у тебя расписание и расчёты тоже держатся на ручном труде, приходи за помощью
Начнём со встречи: покажешь, как вы работаете сейчас, откуда приходят заявки и как считаются деньги. Я нарисую карту и разложу задачи по направлениям. Систему соберу поверх того, как вы уже работаете, в Google Таблицах и без серверов.