# Договор по шаблону в Word: 7 шагов до своей формы без копирования старых файлов

> Я собрала форму, которая принимает данные клиента, подставляет их в шаблон Word и сохраняет отдельный файл. Ниже - схема, промпты и разбор поломок.

Источник: https://vibeceh.ru/cases/dogovory-po-shablonam-v-word
Автор: Сергей Мазур · опубликовано 2026-08-15

Я собрала форму, которая принимает данные клиента, выбирает работу и деталь, а Word сам собирает отдельный заказ-наряд и гарантийный лист. Это мой рабочий вариант, когда нужен [договор по шаблону](/guides/dogovory-po-shablonam-v-tablice) без копирования старого документа и риска оставить в нём чужую модель техники.

Делюсь с удовольствием. Ниже пошаговая инструкция из семи шагов, и к каждому есть готовый промпт: копируй, меняй поля под себя и собирай форму для мастерской, салона, автосервиса, клиники или магазина. Подробно покажу и саму связку, и места, где она может дать сбой.

Поводом стал заказ-наряд, в котором осталась чужая модель телефона.

## Что стало вместо ручного заполнения договора в Word?

В моей мастерской договор по шаблону собирается так: форма принимает данные клиента и техники, после чего Word создаёт отдельный `.docx` с заказ-нарядом и гарантийным листом. В документе остаются модель, неисправность, работа, установленная деталь и стоимость из текущей заявки. Старый файл не переписывается и не уходит следующему клиенту.

Я каждый день принимаю технику в ремонт. Данные приходят по телефону, в мессенджере и на бумаге. Раньше я копировала старый Word-файл, меняла модель, неисправность, стоимость и сроки, а потом ещё раз читала весь документ.

Хуже копирования было другое. В заказ-наряде гарантия на работу и на установленную деталь должны храниться раздельно. При повторном обращении подставляются оба срока и ссылка на предыдущий ремонт. Если держать это в голове и менять на глаз, одна строка легко теряется.

Теперь форма собирает данные в одном месте. Я указываю клиента, технику, результат диагностики, работу и деталь. Дальше помощник готовит отдельную копию шаблона и подставляет значения в нужные поля.

В готовом документе есть понятная последовательность: что приняли, что сделали, какие детали поставили и на что распространяется гарантия. Для меня практический смысл запроса «заполнение договора в word» в том, чтобы выдать клиенту аккуратный документ по своей рабочей схеме.

Я не стала добавлять туда склад, кассу, личные кабинеты и отчёты. Мне нужен [заказ-наряд](/guides/zakaz-naryady-v-avtoservise) без чужой модели телефона и гарантия, которую не приходится вспоминать по памяти.

Шаблон должен оставаться отдельно. Автоматизация сначала делает его копию, а уже потом заменяет маркеры. Так повторная заявка не перезапишет предыдущий документ.

## Почему свою форму нельзя сравнивать с готовым сервисом?

Своя форма позволяет сразу изменить правило, добавить поле или разделить гарантию на работу и деталь. Готовый сервис создаёт документ из карточки клиента по предусмотренному сценарию. Он может подойти для стандартной задачи, но любое отклонение зависит от возможностей продукта и его поддержки.

![Кот фейспалмит рядом со сравнением своей формы и готового сервиса.](https://s3.regru.cloud/crossmark/statejnik/images/guides/dogovory-po-shablonam-v-word/kadr-1.webp)

В готовом сервисе сценарий обычно выглядит понятно: открываешь карточку клиента, нажимаешь создание документа, система подставляет поля и предлагает сохранить готовый договор. Такой вариант существует, например, в CRM-сценарии Мегаплана: шаблон связывается с карточкой, а после генерации файл можно сохранить на компьютер.

Для типового договора это удобно. Но у меня документ не заканчивается именем клиента и датой. В нём есть диагностика, конкретная работа, установленная деталь и два разных гарантийных срока. Если правило изменилось, мне надо изменить его сразу в форме и шаблоне, а не подстраиваться под чужую карточку.

В собственной форме можно добавить поле «ссылка на предыдущий ремонт», сделать два отдельных срока гарантии или поменять порядок блоков. Я не жду отдельного релиза продукта под одну небольшую мастерскую.

Это не значит, что готовый сервис плохой. Если нужен стандартный документ из карточки, он может оказаться проще. Если нужен привычный Word-шаблон с собственными полями и правилами, своя форма даёт больше контроля.

Я сравнивала не количество кнопок. Я смотрела на то, насколько быстро можно поменять одно отраслевое правило. Для меня это важнее, чем десятки функций, которыми я не пользуюсь.

## Из чего состоит заполнение договоров по шаблону?

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

Схема несложная:

1. Клиент или сотрудник заполняет форму.
2. Ответ попадает в [Google Sheets](/concepts/google-tablicy).
3. Событие отправки запускает Apps Script.
4. Скрипт берёт шаблон из Google Drive.
5. Делает копию в папке готовых документов.
6. Находит маркеры вроде `{{client_name}}` и заменяет их значениями.
7. Сохраняет результат в формате `.docx`.
8. Записывает статус и ссылку в журнал.

В форме названия вопросов лучше сразу делать похожими на логические имена данных:

```text
client_name
device_model
diagnostic_result
work_name
part_name
work_warranty
part_warranty
previous_repair_link
```

Тогда таблица не превращается в угадайку. Ответ на вопрос «ФИО клиента» связывается с полем клиента, а «Срок гарантии на деталь» - с отдельным сроком, а не с общей ячейкой гарантии.

В Google Forms ответ формы представлен набором ответов на вопросы. Если ответы записываются в Sheets, скрипт может обращаться к значениям по названиям вопросов, а не искать нужный столбец по номеру.

Google про это пишет так: «An installable form submit trigger runs when a user responds to a form» (перевод: «Триггер отправки формы срабатывает, когда пользователь отвечает на форму»).

Шаблон хранится отдельно от готовых файлов. Скрипт получает его ID, делает копию в нужной папке, задаёт имя из данных клиента и заменяет маркеры уже внутри копии.

Маркеры должны быть простыми и одинаковыми во всём документе. Например, `{{client_name}}` и `{{work_warranty}}`. Если один и тот же срок в шаблоне записан разными словами, помощнику сложнее проверить, все ли места заменились.

Я оставила в журнале четыре поля: ID заявки, статус, имя созданного файла и ссылку. Без журнала приходится открывать папку и гадать, какой документ относится к какой заявке.

## Что поставить, чтобы автоматически заполнять договор в Word?

Для сборки нужны редактор Visual Studio Code, помощник Claude Code, аккаунт помощника и доступы к Google Forms, Sheets, Docs и Drive. Инструменты ставятся один раз. В рабочей схеме также понадобятся web app Apps Script и webhook (автоматическая передача заявки от бота), если данные будут приходить из бота, а не только из формы.

Редактор нужен как папка проекта с файлами. Помощник генерирует код по вашей задаче, вам остаётся проверять результат. Помощник работает прямо внутри редактора: получает задачу обычными словами, создаёт файлы, меняет их и объясняет результат.

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

Для минимального сценария с формой нужны:

- аккаунт Google;
- Google Form;
- таблица с ответами;
- шаблон в Google Docs или файл Word, подготовленный для работы со связкой;
- папка Google Drive для готовых документов;
- доступ Apps Script к Sheets, Docs и Drive;
- web app Apps Script, если нужен внешний POST-запрос;
- webhook и токен бота, если данные будут приходить из Telegram.

Если используешь Telegram, токен нельзя публиковать в открытом коде или таблице. Webhook отправляет POST-запрос в `doPost(e)`. При включённом webhook нельзя одновременно получать обновления через `getUpdates`.

Подписка на Claude Code платная и входит в постоянные расходы схемы. Подтверждённой цены подписки у меня нет, поэтому сумму не называю. Перед сборкой проверь актуальный тариф и способ оплаты. Стоимость готового сервиса тоже сравнивай только после проверки конкретного тарифа, а не по обещанию «без программирования».

## Как сделать шаблон договора в Word с автозаполнением?

Собирай форму по частям: сначала опиши рутину, затем поля, маркеры, таблицу и копирование шаблона. После этого свяжи отправку формы со скриптом, создай отдельный `.docx` и проверь его на тестовых данных. Каждый шаг заканчивай просмотром результата, иначе причину ошибки потом будет трудно найти.

![Кот удивлённо смотрит на три карточки первых шагов сборки шаблона.](https://s3.regru.cloud/crossmark/statejnik/images/guides/dogovory-po-shablonam-v-word/kadr-2.webp)

Создай папку проекта и открой её в Visual Studio Code. Сначала попроси помощника разобраться в приёмке техники, а не писать большую программу.

   

Помощник должен вернуть список полей и порядок работы. Проверь, что отдельными пунктами стоят работа, деталь, гарантия на работу и гарантия на деталь.

Создай Google Form и назови вопросы так, чтобы они совпадали с логическими именами данных.

   

В ответе появится таблица полей. Не добавляй вопрос, если он не участвует в заказ-наряде или гарантийном листе.

Открой копию Word-шаблона и вставь в нужные места простые маркеры.

   

Помощник выдаст карту подстановки. Перенеси маркеры в копию шаблона и сохрани её отдельно от рабочей версии. Один маркер не разрывай разным форматированием внутри Word.

Подключи ответы Google Form к Google Sheets и попроси помощника работать с названиями полей, а не с номерами колонок.

   

В результате должен появиться понятный план таблицы. У каждой заявки должен быть свой ID. Это понадобится для защиты от повторной генерации.

Передай помощнику правило: исходный шаблон не менять, готовый файл класть в отдельную папку.

   

Помощник должен описать, какие файлы и настройки меняет. Проверь сначала один тестовый документ с вымышленными данными, а не всю таблицу сразу.

Если запуск идёт после отправки Google Form, выбери триггер отправки формы для таблицы, куда записываются ответы. Не создавай два одинаковых триггера.

   

При первом запуске Google запросит доступы к таблице, документам и папке Drive. Создавай триггер с рабочего аккаунта, у которого есть права на шаблон и папку.

Заполни тестовую форму и открой созданный файл в Word. Сверь не только наличие файла, но и содержание.

   

После первого результата помощник написал код вместо ручного программирования с моей стороны. Так собирают программы с ИИ-ассистентом, и называется это вайб-кодинг. Но смотреть глазами всё равно надо: помощник не знает, правильно ли в твоём заказ-наряде указана гарантия.

Я не пыталась собрать весь бизнес в одном проекте. Сначала нужна одна форма и один документ. Когда эта связка проходит проверку, можно добавлять отдельные поля и новые типы документов.

Практикум полезен именно тем, что там такую сборку проходят руками на своей рабочей задаче. Практикум проходит на рутине, которую ты каждый день повторяешь и хочешь изменить.

## Что появилось в папке и что делать, если договор не создаётся?

После успешной обработки появляются копия шаблона, отдельный Word-файл, ссылка на него и запись в журнале статусов. Если файл создаётся дважды, дата съезжает, доступ истёк или выполнение остановилось, сначала проверь ID заявки, права и журнал. Сложное форматирование после экспорта в Word нельзя считать исправным без визуальной проверки.

![Женщина без лица прикрывает ладонью лицо рядом с карточками типичных ошибок генерации.](https://s3.regru.cloud/crossmark/statejnik/images/guides/dogovory-po-shablonam-v-word/kadr-3.webp)

В папке готовых документов должен появиться отдельный файл `.docx`. В таблице журнала - ID заявки, статус, имя файла, ссылка и сообщение об ошибке, если оно возникло.

Проверяй сбои по симптомам.

- **Один ответ создаёт два файла.** Частая причина - два одинаковых триггера или повторная доставка webhook. Проверь список триггеров и уникальный ID заявки.

  Правильный результат - одна строка обработки, один файл и одна запись в журнале.

- **Webhook повторяет заявку.** Отправляющая сторона может доставить один запрос повторно после сетевой задержки или ответа с ошибкой. Сохрани `messageId`, `submissionId` или другой устойчивый ID и делай обработку повторного запроса безопасной.

  Повтори один и тот же запрос дважды и проверь, что в папке остался один документ.

- **В договоре стоит неправильная дата.** Сверь часовой пояс формы, таблицы и скрипта. Дату в документ передавай уже отформатированной строкой, а не необработанным объектом даты.

  Для проверки используй заявку около полуночи и сравни форму, таблицу, журнал и Word-файл.

- **Доступ к Google истёк.** Ошибки `401`, `invalid_grant` и `token expired` означают, что авторизацию надо проверить заново. Важно, под каким аккаунтом создан триггер: он работает от имени создавшего его пользователя.

  После повторной авторизации создай тестовый документ и проверь, что рабочая папка доступна именно нужному аккаунту.

- **Скрипт упирается в лимит выполнения.** Один запуск Apps Script ограничен шестью минутами. Большую очередь не обрабатывай целиком: дели её на небольшие пачки и сохраняй статус каждой заявки.

  Сначала прогони несколько тестовых заявок. Если объём растёт, учитывай дневные квоты Apps Script.

- **Поля шаблона повреждены.** После ручного редактирования могли измениться маркеры или их форматирование.

  Рабочий шаблон храни отдельно. Изменения сначала проверяй на копии.

- **Сложная разметка меняется после экспорта.** Наличие файла ещё не означает, что документ выглядит правильно. Таблицы, колонтитулы, разрывы страниц, нумерация и нестандартные шрифты требуют проверки в Microsoft Word.

  Эту проблему нельзя уверенно закрыть только успешным статусом скрипта. Документ нужно открыть и прочитать.

## Сколько стоит своя форма против готового сервиса?

Своя форма строится на Google Forms, Sheets, Apps Script, Drive и Word-файле, но у неё есть лимиты и необходимость поддержки. Готовый сервис даёт готовый CRM-сценарий, зато правила зависят от продукта. Ручное заполнение не требует настройки, но сохраняет копирование и риск ошибки.

| Вариант | Расходы | Контроль над шаблоном | Изменение правил | Поддержка и ограничения |
|---|---|---|---|---|
| Своя форма | Google-инструменты и платная подписка помощника | Высокий, шаблон и поля задаёшь сама | Меняешь форму, маркеры и обработку под мастерскую | Нужно следить за доступами, журналом, дублями и квотами |
| Готовый сервис | Цена зависит от тарифа продукта | Зависит от возможностей сервиса | Может потребоваться настройка продукта или обращение в поддержку | Меньше технической сборки, но больше зависимости от сервиса |
| Ручное заполнение | Отдельной подписки на схему нет | Полный контроль глазами | Меняешь документ руками | Копирование, повторная проверка и риск оставить чужие данные |

Для обычного личного аккаунта Google в документации указаны лимиты: до 250 созданных документов в день, до 2000 конвертаций, до 20 000 вызовов внешних сервисов (`UrlFetchApp`), до 90 минут работы триггеров в день и до шести минут на один запуск. Для Google Workspace значения выше.

Экспорт Google-документа ограничен размером 10 МБ. Для стандартного заказ-наряда это не выглядит главным препятствием, но большой документ с изображениями и приложениями нужно проверять отдельно.

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

Своя форма не заменяет юридическую проверку договора. Она подставляет данные и создаёт файл, но не проверяет, соответствует ли шаблон конкретной сделке, содержит ли нужные условия и не противоречит ли законодательству. Сложный документ нельзя запускать без тестирования.

## Вопросы и ответы

Форма собирает данные клиента, таблица сохраняет ответы, а Apps Script создаёт копию шаблона и заменяет в ней маркеры. Готовый документ сохраняется отдельным файлом `.docx`, а ссылка и статус попадают в журнал.

Опиши помощнику свою рутину обычными словами. Дальше он помогает подготовить поля, маркеры, таблицу, обработку формы и проверку. Разбирать код вручную не обязательно, но результат нужно проверять на тестовых заявках.

Excel можно использовать как таблицу с ответами, если данные приводятся к понятным названиям полей. Для схемы из этой статьи удобнее Google Sheets: после отправки формы Apps Script читает строку, создаёт копию шаблона и подставляет значения.

Вставь в копию документа уникальные маркеры вроде `{{client_name}}`, `{{contract_date}}` и `{{contract_price}}`. Исходный шаблон держи отдельно, а для каждой заявки создавай копию. Перед рабочим запуском проверь даты, числа, длинные значения и пустые поля.

Сначала составь список данных клиента, затем расставь в документе маркеры и свяжи их с названиями полей формы. После отправки формы обработчик должен сделать копию, заменить маркеры и сохранить файл. Если маркер не найден, запись должна попасть в журнал с ошибкой.

Для этой схемы используй текстовые маркеры, а не поля, которые могут разрываться форматированием. Пиши их одинаково во всех местах документа. Один маркер не разделяй разными стилями и проверь его на копии шаблона.

Подготовь форму с именем, телефоном, датами, услугой, стоимостью и другими нужными полями. После отправки ответы попадут в таблицу, скрипт создаст копию шаблона и заменит маркеры. Готовый файл можно открыть в Word и проверить глазами.

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

Не обязательно покупать отдельную программу. Связку можно собрать из формы, таблицы, Apps Script, Google Drive и шаблона Word. При этом помощник работает по платной подписке, а сама схема требует настройки доступов, проверки ошибок и контроля квот.

Открой готовый `.docx` в Microsoft Word и проверь страницы, таблицы, колонтитулы, нумерацию, длинные строки и шрифты. Сам факт успешного экспорта не гарантирует полного сохранения сложной разметки.

Для каждой заявки нужен уникальный ID. Скрипт должен делать копию исходного шаблона, задавать ей имя по данным клиента и сохранять ссылку в журнале. Повторная заявка с тем же ID не должна создавать второй файл.

Оставь один неизменяемый исходный шаблон с маркерами. Каждая новая строка формы запускает создание отдельной копии. После подстановки сохрани её в папке готовых документов, а исходник не редактируй автоматически.

- [Google Forms Service](https://developers.google.com/apps-script/reference/forms)
- [Google Apps Script Web Apps](https://developers.google.com/apps-script/guides/web)
- [Google Apps Script Installable Triggers](https://developers.google.com/apps-script/guides/triggers/installable)
- [Google Docs Body](https://developers.google.com/apps-script/reference/document/body)
- [Google Drive File](https://developers.google.com/apps-script/reference/drive/file)
- [Google Drive: Download and export files](https://developers.google.com/workspace/drive/api/guides/manage-downloads)
- [Google Drive: Export MIME types](https://developers.google.com/workspace/drive/api/guides/ref-export-formats)
- [Google Apps Script Quotas](https://developers.google.com/apps-script/guides/services/quotas)
- [Telegram Bot API](https://core.telegram.org/bots/api)
- [Telegram Bots FAQ](https://core.telegram.org/bots/faq)
- [Мегаплан: шаблоны документов](https://support.megaplan.ru/modules/disk/templates/addown)
- [Почему триггер onFormSubmit срабатывает дважды](https://stackoverflow.com/questions/56438113/why-does-onformsubmit-trigger-fire-twice-sometimes-after-a-user-submits-their-qu)
- [Google Apps Script trigger runs twice](https://stackoverflow.com/questions/72224026/google-apps-script-trigger-function-runs-twice)
- [Ошибка часового пояса в Google Forms и Apps Script](https://stackoverflow.com/questions/47702358/error-with-timezone-into-google-forms-with-apps-script)
- [Пример повторной доставки webhook](https://github.com/android-sms-gateway/example-webhooks-google-sheets)
- [OAuth-токен истекает через семь дней](https://github.com/activepieces/activepieces/issues/3067)
- [Лимит времени выполнения Apps Script](https://gist.github.com/fabianem/5012c0b9b44d0bd2c167ab7c81a82937?permalink_comment_id=4894319)
- [Повреждение параметров шаблона](https://forum.mista.ru/topic/865537)
- [Проблемы разметки шаблонов при создании документа](https://infostart.ru/1c/reports/148909/)

_Это собирательная история выпускников практикума, а не рассказ одного человека: так эта работа устроена в большинстве таких дел._
