Автоматизация договоров в Google Docs: генерация PDF и отправка в Telegram

Юрий Герук 2025-11-27 60
Автоматизация договоров в Google Docs: генерация PDF и отправка в Telegram

Содержание

    Введение

    Договоры, акты, счета, коммерческие предложения — всё это документы, с которыми сталкивается любой специалист: от руководителя отдела до технической поддержки. Их создание отнимает много времени. Каждая правка вручную, каждая подстановка реквизитов, каждое сохранение в PDF превращаются в рутинный процесс, который легко автоматизируется.

    Google Docs вместе с Google Apps Script дают возможность превратить подготовку документов в полностью автоматизированный конвейер:

    • готовый шаблон с переменными;
    • боковая форма для ввода всех реквизитов;
    • автоматическая подстановка данных;
    • генерация PDF в один клик;
    • отправка готового файла в Telegram;
    • сохранение вводимых данных для повторного использования;
    • пресеты-шаблоны для разных организаций.

    Эта статья — полный разбор, как внедрить такую систему у себя, с рабочими примерами и готовыми кодами.

    Основная идея автоматизации

    В Google Docs используется механизм «плейсхолдеров» — специальных меток, которые заменяются значениями, введёнными пользователем в боковой форме.

    Пример плейсхолдера:

    {{Организация}}
    {{Директор_ФИО}}
    {{Дата}}
    {{Сумма}}
    {{Сайт_Домен}}
    

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

    Пример шаблона договора

    Простой вариант выглядит так:

    СУБЛИЦЕНЗИОННОЕ СОГЛАШЕНИЕ № {{Соглашение_Номер}}
    от {{Дата_Цифрами}} г.
    
    {{Сублицензиат_Организация_Имен}}, в лице {{Сублицензиат_Руководитель_Должность_Имен}} 
    {{Сублицензиат_Руководитель_ФИО_Имен}}, действующего на основании {{Основание}},
    с одной стороны, и …
    
    Сайт: {{Сайт_Домен}}
    Сумма оплаты: {{Сумма_Руб}} руб.
    Тариф: {{Тариф}}
    Период: {{Месяцев_Текст}}
    

    Скрипт подставит вместо них реальные данные, а документ станет готовым договором.

    Добавляем боковую форму (Sidebar)

    Сайдбар — это HTML-форма, в которой вы вводите реквизиты. Google Docs показывает её как персональную панель справа.

    Пример формы:

    <h3>Заполнение договора</h3>
    
    <div class="group">
     <label>Номер соглашения</label>
     <input id="Соглашение_Номер" placeholder="например 99">
    </div>
    
    <div class="group">
     <label>Дата (дд.мм.гггг)</label>
     <input id="Дата_Цифрами" placeholder="05.11.2025">
    </div>
    
    <div class="group">
     <label>Организация</label>
     <input id="Сублицензиат_Организация_Имен" placeholder="ООО «Пример»">
    </div>
    
    <div class="group">
     <label>Директор ФИО</label>
     <input id="Сублицензиат_Руководитель_ФИО_Имен" placeholder="Иванов Иван Иванович">
    </div>
    
    <div class="group">
     <label>Должность руководителя</label>
     <input id="Сублицензиат_Руководитель_Должность_Имен" placeholder="директор">
    </div>
    
    <div class="group">
     <label>Сайт / домен</label>
     <input id="Сайт_Домен" placeholder="example.ru">
    </div>
    
    <div class="group">
     <label>Сумма</label>
     <input id="Сумма_Руб" inputmode="decimal" placeholder="15000.00">
    </div>
    
    <div class="group">
     <label>Тариф</label>
     <select id="Тариф">
     <option>Базовый</option>
     <option>Стандарт</option>
     <option>Премиум</option>
     </select>
    </div>
    
    <div class="group">
     <label>Период (число месяцев)</label>
     <input id="Месяцев_Число" placeholder="6">
    </div>
    
    <div class="group">
     <label>Период (текст)</label>
     <input id="Месяцев_Текст" placeholder="6 месяцев">
    </div>
    
    <button onclick="saveCopyAndPdf()">Создать PDF</button>
    

    Это и есть заполнение всех плейсхолдеров.

    Скрипт, который всё автоматизирует

    Google Apps Script выполняет три задачи:

    1. заменяет плейсхолдеры в документе;
    2. создаёт копию документа;
    3. генерирует PDF и отправляет его в Telegram.

    Пример:

    const telegramToken = "000000:TEST";
    const chatIds = ['-1000000000'];
    
    function onOpen() {
     DocumentApp.getUi()
     .createMenu("Договор")
     .addItem("Открыть форму", "showSidebar")
     .addToUi();
    }
    
    function showSidebar() {
     const html = HtmlService.createTemplateFromFile("Sidebar")
     .evaluate()
     .setTitle("Заполнение договора");
     DocumentApp.getUi().showSidebar(html);
    }
    
    function saveCopyAndPdf(data) {
     const doc = DocumentApp.getActiveDocument();
     const file = DriveApp.getFileById(doc.getId());
    
     const copy = file.makeCopy("Договор_" + data.Соглашение_Номер);
     const copyDoc = DocumentApp.openById(copy.getId());
    
     replacePlaceholders(copyDoc, data);
     copyDoc.saveAndClose();
    
     const pdf = DriveApp.getFileById(copy.getId())
     .getAs("application/pdf")
     .setName("Договор.pdf");
    
     sendToTelegram(pdf);
     copy.setTrashed(true);
    }
    
    function replacePlaceholders(doc, data) {
     const body = doc.getBody();
     Object.keys(data).forEach(key => {
     body.replaceText(`\\{\\{${key}\\}\\}`, data[key]);
     });
    }
    
    function sendToTelegram(blob) {
     const url = `https://api.telegram.org/bot${telegramToken}/sendDocument`;
     chatIds.forEach(chatId => {
     UrlFetchApp.fetch(url, {
     method: "post",
     payload: {
     chat_id: chatId,
     document: blob,
     caption: "Готовый договор"
     }
     });
     });
    }
    

    Как всё подключить и запустить

    После того как HTML и скрипт вставлены в Google Apps Script:

    1. Нажать “Сохранить проект”
    2. Вернуться в Google Docs и обновить страницу
    3. В верхнем меню появится новый пункт «Договор»
    4. Нажать один раз пункт «Открыть форму»
    5. Google попросит разрешения на работу скрипта
    6. Подтвердить доступ от своего Google-аккаунта
    7. С этого момента боковая форма будет работать всегда
    8. Вводите данные → нажимаете кнопку → получаете готовый PDF в Telegram

    Это занимает меньше минуты при использовании.

    Ещё несколько примеров, что можно сделать

    Пример 1. Договор аренды

    Арендодатель: {{Организация}}
    Представитель: {{Директор_ФИО}}
    Объект аренды: {{Адрес_Объекта}}
    Срок: {{Период}}
    Стоимость: {{Сумма}} руб.
    

    Пример 2. Акт выполненных работ

    Исполнитель: {{Исполнитель}}
    Заказчик: {{Заказчик}}
    Дата оказания услуг: {{Дата}}
    Сумма по акту: {{Сумма}}
    

    Пример 3. Коммерческое предложение

    Компания: {{Организация}}
    Описание услуги: {{Описание}}
    Стоимость: {{Сумма}} руб.
    Дата подготовки: {{Дата}}
    

    Пример 4. Автоматическая нумерация договоров

    Использование формата:

    {{Соглашение_Номер}}
    

    Можно автоматически формировать:

    • 2025-02-001
    • 2025-02-002
    • 2025-02-003

    При каждом нажатии "Создать PDF".

    Пример 5. Отправка сразу в несколько Telegram-каналов

    Достаточно перечислить chatIds:

    const chatIds = [
     '-1001111111111', // отдел продаж
     '-1002222222222', // канал бухгалтерии
     '-1003333333333' // личный архив
    ];
    

    Итог

    Google Apps Script превращает Google Docs в мощную автоматизированную систему для подготовки документов.

    Что в итоге получается:

    • шаблон →
    • форма для заполнения →
    • автоматическая подстановка данных →
    • PDF →
    • отправка в Telegram →
    • никакого ручного копирования текста

    Это экономит время, снижает количество ошибок и делает процесс унифицированным.

    Система подходит для:

    • договоров
    • актов
    • счетов
    • приложений
    • коммерческих предложений
    • любых шаблонных документов

    Это одна из тех автоматизаций, которые внедряешь один раз — а экономия времени идёт каждый день.

    Оцените полезность материала!

    Лицензия: CC BY-SA 4.0

    Автор: Юрий Герук

    Похожие материалы:

    Комментарии