Создание шаблона «Заявка водителю» с автоподстановкой данных из подобранного авто
Хочу себе такие же кнопкиЧто вы получите от этого урока
- Шаблон «Заявка водителю» готов к использованию в любой системе планирования перевозок.
- Автоподстановка данных из выбранного транспортного средства (марка, госномер, тоннаж, статус).
- Навык построения динамических форм, которые ускоряют работу диспетчеров и снижают количество ошибок.
1. Почему шаблон важен в логистике
В реальном времени каждый запрос на перевозку проходит несколько этапов: подбор автомобиля, формирование заявки, согласование с водителем, запись в журнал. Если эти действия выполнять вручную, теряется время и растёт риск «человеческого фактора». Автоматический шаблон – это единственная точка ввода, где меняются только переменные поля, а всё остальное уже готово.
Аналогия: представьте, что вам нужно каждый день писать письмо‑заказ поставщику. Вместо того, чтобы писать каждый раз с нуля, вы открываете готовый шаблон, меняете только название товара и количество. Тот же принцип работает и с заявкой водителю.
2. Основные элементы шаблона
| Элемент | Описание | Пример значения |
|---|---|---|
| Заголовок | Указывает тип документа | «Заявка водителю» |
| Номер заявки | Уникальный идентификатор | REQ-2026-00123 |
| Дата и время | Момент формирования | 13.05.2026 09:15 |
| Автомобиль | Выбранный транспорт | Грузовик Volvo FMX 2020 |
| Госномер | Регистрационный номер | A123BC77 |
| Тоннаж | Грузоподъёмность | 18 т |
| Маршрут | Пункт отправления → пункт назначения | Москва → Санкт‑Петербург |
| Контакт водителя | Телефон, мессенджер | +7 987 654‑32‑10 |
| Комментарий | Дополнительные инструкции | Требуется охрана |
Все поля, которые меняются от заявки к заявке, называют переменными. Мы будем помещать их в шаблон в виде заполнителей (placeholders) вида {{переменная}}.
3. Выбор инструмента
Самыми популярными вариантами являются:
- Google Таблицы + Google Docs – облачное, совместное редактирование, простая интеграция через
IMPORTRANGEиGoogle Apps Script. - Microsoft Excel + Word – классический набор, работает офлайн, поддерживает
Mail Merge. - CRM‑система (например, Bitrix24, Zoho CRM) – уже содержит модули “Транспортные средства” и “Заявки”.
В этом уроке мы разберём Google Таблицы + Google Docs, потому что они бесплатны, доступны из любого браузера и позволяют быстро публиковать шаблон в виде PDF‑файла.
4. Подготовка справочника транспортных средств
Создайте таблицу «Транспорт» в Google Таблицах:
| A | B | C | D | E |
|---|---|---|---|---|
| ID | Марка | Госномер | Тоннаж | Статус |
| 1 | Volvo FMX | A123BC77 | 18 | Свободен |
| 2 | Scania R450 | B987XY55 | 20 | На загрузке |
| 3 | Mercedes Actros | C321DE99 | 22 | В пути |
- ID – внутренний идентификатор (используется в формуле).
- Статус – помогает отфильтровать только свободные машины.
Совет: добавьте столбец «Тип груза» и «Требуемый экипаж», если такие детали влияют на подбор.
5. Создание шаблона в Google Docs
- Откройте Google Docs, создайте пустой документ.
- Вставьте фиксированный текст, оставив места для переменных в двойных фигурных скобках:
Заявка водителю №{{НомерЗаявки}}
Дата: {{Дата}} {{Время}}
Уважаемый {{ИмяВодителя}}!
Вам назначено транспортное средство:
Марка: {{Марка}}
Госномер: {{Госномер}}
Тоннаж: {{Тоннаж}} т
Статус: {{Статус}}
Маршрут: {{Маршрут}}
Контакт: {{КонтактВодителя}}
Комментарий: {{Комментарий}}
Пожалуйста, подтвердите получение заявки.
- Сохраните документ под названием «Шаблон заявки» и скопируйте его ID из URL (строка после
document/d/и до/edit).
6. Связывание данных через Google Apps Script
6.1. Открываем скрипт
- В таблице «Транспорт» → Расширения → Apps Script.
6.2. Основной код
/**
* Функция генерирует заявку в PDF и отправляет её водителю.
* @param {number} vehicleId ID выбранного автомобиля
* @param {string} driverName Имя водителя
* @param {string} route Маршрут (например, "Москва → СПб")
* @param {string} comment Дополнительный комментарий
*/
function generateRequest(vehicleId, driverName, route, comment) {
const ss = SpreadsheetApp.getActiveSpreadsheet();
const sheet = ss.getSheetByName('Транспорт');
const data = sheet.getDataRange().getValues(); // массив всех строк
// 1️⃣ Находим строку с нужным ID
const vehicle = data.find(row => row[0] === vehicleId);
if (!vehicle) throw new Error('Автомобиль не найден');
// 2️⃣ Формируем объект заменяемых полей
const placeholders = {
'{{НомерЗаявки}}': 'REQ-' + Utilities.formatDate(new Date(), 'GMT+3', 'yyyyMMdd') + '-' + Math.floor(Math.random()*1000),
'{{Дата}}': Utilities.formatDate(new Date(), 'GMT+3', 'dd.MM.yyyy'),
'{{Время}}': Utilities.formatDate(new Date(), 'GMT+3', 'HH:mm'),
'{{ИмяВодителя}}': driverName,
'{{Марка}}': vehicle[1],
'{{Госномер}}': vehicle[2],
'{{Тоннаж}}': vehicle[3],
'{{Статус}}': vehicle[4],
'{{Маршрут}}': route,
'{{КонтактВодителя}}': '+7 987 654-32-10', // можно вынести в отдельный лист
'{{Комментарий}}': comment || ''
};
// 3️⃣ Получаем шаблон из Docs
const templateId = 'YOUR_TEMPLATE_DOC_ID'; // ← замените на ваш ID
const doc = DocumentApp.openById(templateId);
const body = doc.getBody();
// 4️⃣ Заменяем плейсхолдеры
for (const [key, value] of Object.entries(placeholders)) {
body.replaceText(key, value);
}
// 5️⃣ Сохраняем как PDF
const pdfBlob = doc.getAs('application/pdf').setName('Заявка_' + placeholders['{{НомерЗаявки}}'] + '.pdf');
// 6️⃣ Отправка письма (по желанию)
MailApp.sendEmail({
to: '+7 987 654-32-10', // телефон в виде email‑SMS, если поддерживается
subject: 'Новая заявка №' + placeholders['{{НомерЗаявки}}'],
body: 'Вам пришла новая заявка. Смотрите вложение.',
attachments: [pdfBlob]
});
// 7️⃣ Возвращаем PDF‑ссылка (для дальнейшего использования)
const file = DriveApp.createFile(pdfBlob);
return file.getUrl();
}
Пояснение к коду
replaceTextищет все вхождения{{переменная}}и заменяет их значением.Utilities.formatDateформирует читаемую дату/время.Math.random()*1000гарантирует уникальность номера заявки.
6.3. Как вызвать функцию
В таблице добавьте кнопку (вставка → рисунок → назначить скрипт) и привяжите её к следующей обёртке:
function onButtonClick() {
const ui = SpreadsheetApp.getUi();
const response = ui.prompt('Введите ID автомобиля, имя водителя, маршрут и комментарий (через запятую)',
'Пример: 1, Иванов, Москва → СПб, Требуется охрана', ui.ButtonSet.OK_CANCEL);
if (response.getSelectedButton() !== ui.Button.OK) return;
const [id, name, route, comment] = response.getResponseText().split(',').map(s => s.trim());
const pdfUrl = generateRequest(Number(id), name, route, comment);
ui.alert('Заявка создана. Ссылка на PDF: ' + pdfUrl);
}
Теперь, нажимая кнопку, вы получаете готовый документ, который автоматически заполняется данными из выбранного автомобиля.
7. Проверка и отладка
| Шаг | Что проверить | Как исправить |
|---|---|---|
| 1️⃣ | ID автомобиля существует в таблице | Добавьте проверку if (!vehicle) … (в коде уже есть). |
| 2️⃣ | Плейсхолдеры совпадают с шаблоном | Убедитесь, что в Docs нет опечаток ({{Марка}} vs {{Марка }}). |
| 3️⃣ | Формат даты соответствует локали | Поменяйте параметр 'GMT+3' на ваш часовой пояс. |
| 4️⃣ | PDF‑файл сохраняется в нужной папке | Добавьте DriveApp.getFolderById('FOLDER_ID').addFile(file); |
| 5️⃣ | Отправка письма работает | Проверьте, что у вас включён сервис MailApp. |
8. Расширенные возможности
| Возможность | Как реализовать | Пример применения | |
|---|---|---|---|
| Автоподбор свободного авто | Фильтрация Статус = "Свободен" и выбор первого |
const free = data.filter(r => r[4] === 'Свободен')[0]; |
Диспечер просто нажимает «Подобрать авто», система сама выбирает свободный грузовик. |
| Сохранение истории заявок | После генерации добавьте строку в лист «История» | historySheet.appendRow([placeholders['{{НомерЗаявки}}'], …]); |
Позволяет быстро посмотреть, какие машины уже задействованы. |
| Интеграция с GPS‑системой | Добавьте поле {{Координаты}} и берите их из API |
UrlFetchApp.fetch('https://api.gps.com/vehicle/'+vehicleId) |
Водитель получает точные координаты места погрузки. |
| Мультиязычность | Храните тексты в отдельном листе «Перевод» и подставляйте их | {{ТекстПривет}} → перевод[language][key] |
Один шаблон обслуживает русскоязычных и англоязычных водителей. |
9. Лучшие практики
- Не храните личные данные (телефоны, email) в открытом доступе – используйте отдельный лист с ограниченными правами.
- Версионируйте шаблон – сохраняйте копию перед каждым крупным изменением.
- Тестируйте на небольшом наборе – создайте 3‑4 заявки вручную и сравните их с автоматически сгенерированными.
- Обучайте диспетчеров – проведите короткий воркшоп, где каждый пробует создать заявку через кнопку.
Практика для закрепления
- Создайте таблицу «Транспорт» с минимум 5 строками, добавьте столбец «Тип груза». Заполните данные правдоподобными значениями.
- Сделайте копию шаблона в Google Docs и замените все плейсхолдеры на новые, например
{{НомерЗаявки}}→{{RequestID}}. Обновите скрипт, чтобы он использовал новые имена. - Напишите функцию
autoSelectVehicle(), которая ищет первый свободный автомобиль, соответствующий требуемому типу груза, и возвращает его ID. Вызовите её изonButtonClick()вместо ввода вручную. - Сгенерируйте 3 заявки с разными водителями и маршрутами. Сохраните полученные PDF‑файлы в отдельную папку Google Диска и проверьте, что в каждой заявке правильно подставлены данные.
- Проведите аудит: откройте лист «История», добавьте столбец «Время генерации», и запишите в него
new Date(). Затем построьте график количества заявок в день. Что вы можете улучшить в процессе?
Поздравляем! Вы теперь умеете быстро создавать профессиональные заявки водителю с автоматическим заполнением всех необходимых полей. Это экономит часы работы и повышает точность коммуникаций в вашей логистической компании. Делайте шаблоны ещё более умными, а ваша работа будет только легче!
Адаптивный дизайн WordPress блога
CamZamZam - снимки с веб камеры и эффектом глитча
Cartoon Network games для детей
Чат-испытание
Инструкция по установке логистического программного обеспечения Logitrans.
Как предотвратить поломки оборудования в логистике.
Как улучшить логистические операции с помощью технологии RFID.
Как выбрать правильное оборудование для логистики на Урале.
Как заработать $1000 в неделю без блога и рекламы
Китайские фитинги и трубы для промышленности
Куклы LOL витрина
Лайфхаки для логистических компаний на Урале.
ЛОР болезни и аллергия: взаимосвязь
Ошибки в логистике: что делать, если груз потерян.
Основные стандарты логистики на Урале.
QR-код декодер онлайн
Регистрация ИП в Москве без посещения офиса
Русская онлайн рулетка
Специалист по доменным трендам
Сравнение логистических решений: CargoLogix vs. LogiMaster.
Стильные сумки для женщин
Субтитры — нет, уши — включены: 5 минут на английский
Важные факторы при выборе хостинга
Видеорегистраторы с функцией записи



