Найти в Дзене
Сам себе айтишник

Формирования документов Google Docs на основе шаблона и данных из Google Таблиц

Оглавление

Работа администратора наполнена однотипными задачами. В крупных компаниях такие задачи, как составление договоров, выставление коммерческих предложений и прочих документов, автоматизируется с помощью CRM систем.

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

Один из таких инструментов Google Docs. Он представляет собой бесплатный онлайн-офис, который может послужить достойной альтернативой Microsoft Office. В этой статье мы расскажем, как формировать документы на основе шаблона с помощью данных из Google Таблиц.

Схема решения для автоматизации формирования документов Добавьте описание
Схема решения для автоматизации формирования документов Добавьте описание

Шаг 1

Генерацию документов будем рассматривать на примере типового договора на оказание услуг. Создадим шаблон документа в Google Docs. Переменные, которые нужно будет внести в договор, сразу укажем в фигурных скобках {данные}:

Шаблон документа в Google Docs
Шаблон документа в Google Docs

Шаг 2

Создадим новую таблицу в Google Таблицах. И пропишем основные столбцы для внесения данных, которые понадобятся нам для генерации документа.

Google Таблица с основными полями для внесения данных
Google Таблица с основными полями для внесения данных

Шаг 3

Далее необходимо открыть редактор скриптов в Google Таблицах. Для этого выберите "Расширения" -> "Apps Script" :

Функция Apps Script в Google Таблицах
Функция Apps Script в Google Таблицах

Шаг 4

Пишем скрипт внутри функции function myFunction() {} (внутри фигурных скобок).

1. Cначала опишем документы, с которыми будет работать скрипт:

var list = SpreadsheetApp.getActiveSheet();
// возвращает активный лист (т.е. текущую открытую таблицу)
const docFile = DriveApp.getFileById("ID_шаблона");
// шаблон файла договора
const tempFolder = DriveApp.getFolderById("ID_папки");
// адрес папки, куда сохраняются новые договоры

ID можно получить из URL папки или файла:

ID файла
ID файла

2. Далее создаем копию документа на основе шаблона и передаем его в скрипт:

const tempFile = docFile.makeCopy(tempFolder);
// делаем копию шаблона для нового договора
const tempDocFile = DocumentApp.openById(tempFile.getId());
// открываем созданный док заказ
const body = tempDocFile.getBody();
// получаем тело (контент) документа в виде временного файла

3. Затем получаем переменные из таблицы:

var number = list.getRange("A2").getValue(); // получаем номер договора из ячейки "A2"
var data = list.getRange("B2").getValue(); // получаем дату договора из ячейки "B2"
var firma = list.getRange("C2").getValue(); // получаем  название фирмы из ячейки "C2"
var inn = list.getRange("D2").getValue(); // получаем  инн фирмы из ячейки "D2"
var forma = list.getRange("E2").getValue(); // получаем организационную из ячейки "E2"
var fullfio = list.getRange("A5").getValue(); // получаем полное ФИО руководителя из ячейки "A5"
var fio = list.getRange("A6").getValue(); // получаем полное ФамилиюИО руководителя из ячейки "A6"
var post = list.getRange("B5").getValue(); // получаем должность руководителя из ячейки "B5"
var pravo = list.getRange("C5").getValue(); // получаем данные о правомочности руководителя из ячейки "C5"
var kpp = list.getRange("D5").getValue(); // получаем данные о КПП из ячейки "D5"

4. Передаем значения переменных в файл:

// заполняем шаблон договора, подставляя полученные данные в переменные:
body.replaceText("{номер_договора}", number);
body.replaceText("{дата}", data);
body.replaceText("{Форма}", forma);
body.replaceText("{Заказчик}", firma);
body.replaceText("{ИНН}", inn);
body.replaceText("{должность}", post);
body.replaceText("{ФИО}", fullfio);
body.replaceText("{основание}", pravo);
body.replaceText("{КПП}", kpp);
body.replaceText("{ФамилияИО}", fio);

5. Присваиваем файлу название, сохраняем и закрываем договор:

const newFileName = 'Договор №'+number+' от '+ data; // присваиваем имя договору
tempFile.setName(newFileName);
// закрываем и сохраняем полученный документ
tempDocFile.saveAndClose();

6. На панели сверху нажимаем значок сохранить скрипт

Значок "сохранить скрипт"
Значок "сохранить скрипт"

Шаг 5

Для удобной работы со скриптом из Google Таблицы добавим скрипт, как макрос. Для этого выберите "Расширения" -> "Макросы"->"Импортировать макрос":

"Расширения" -> "Макросы"->"Импортировать макрос"
"Расширения" -> "Макросы"->"Импортировать макрос"

Открывается всплывающее окно импорта функции, нажимаем "Добавить функцию":

Окно импорта функции
Окно импорта функции

Проверяем, выбираем "Расширения" -> "Макросы" и в открывшемся списке видим наш скрипт "myFunction":

Наш скрипт "myFunction" в меню макросов
Наш скрипт "myFunction" в меню макросов

Шаг 6

Настроим авторизацию скрипта. Кликаем на myFunction в разделе макросов. Выходит всплывающее окно авторизации. Не пугайтесь, это нормально. Процедуру авторизации потребуется пройти только один раз. Мы должны разрешить скрипту доступ к нашим документам на Google диске. Нажимаем "ОК":

Окно авторизации
Окно авторизации

Далее выбираем свой аккаунт в открывшемся окне. Ещё два шага и авторизация будет завершена. В следующем окне выбираем "Дополнительные настройки":

Авторизация для скрипта
Авторизация для скрипта

В дополнительных настройках кликаем на последнюю строку с названием скрипта: "Перейти на страницу "Генерация договора" (небезопасно)". В следующем окне нажимаем на кнопку "Разрешить".

Шаг 7

Проверим работу скрипта. Кликаем на myFunction в разделе макросов. Через несколько секунд видим уведомление, что скрипт выполнен. Готовый договор лежит в указанной нами папке с заполненными данными.

В следующих статьях мы расскажем, как упростить процесс авторизации скрипта, вывести скрипт в меню Google Таблицы, генерировать сразу несколько документов, одним скриптом и многое другое.

Подписывайтесь, учитесь, автоматизируйте))