Как создать документы из данных Гугл Таблицы
  • Ігор Білецький
  • 21.01.2022
  • Коментарі відсутні

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

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

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

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

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

И так, поехали.

В начале составим общий алгоритм.

Имеем исходные данные, например список клиентов, где есть ФИО клиента и еще какие-то данные, которые мы будем использовать при формировании квитанций. Здесь имеется ввиду сформированный каким-либо способом набор исходных данных, который мы будем использовать далее.

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

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

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

При этом общие для всех клиентов данные будут просто копироваться в новый файл, а уникальные — браться из данных клиента (набор данных) и вставляться в нужное место шаблона.

Это можно сделать с помощью заранее закодированных слов и оператора замены. Например, в шаблоне в нужном месте есть строка «{userName}». Скрипт вместо строки «{userName}»  вставит ФИО клиента, данные по которому обрабатываются. И так далее по всем местам в шаблоне, куда необходимо вставить уникальные данные.

Иными словами, мы вначале копируем в нужную папку файл-шаблон, переименовываем его и делаем необходимые замены с помощью оператора замены:

resultFile.replaceText('{userName}', clientName);

В данной строке кода мы вместо  ‘{userName}’ в новый файл вставляем ФИО нашего клиента, которое ранее было сохранено в переменную clientName. И, как можно понять, в переменной resultFile — наш созданный из шаблона файл.

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

function createInvoice() {
// создаем квитанции по шаблону согласно списку клиентов
  let folderID = '1ufVe1iKvmpQWERTYWmOtFzXY2-sTdvD'; //идентификатор папки с платежками
  let templateID = '1gNEEJMN7dP_5qo6NmtSrkfeQWERTYobSDspj1nLu-1g'; //идентификатор шаблона
  let folder = DriveApp.getFolderById(folderID); //получаем конечную папку по ее идентификатору
 
  let sheetSource = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("clientDB"); //получаем лист с исходными данными
  let dataSource = sheetSource.getRange(2,1,sheetSource.getLastRow()-1,sheetSource.getLastColumn()).getValues(); //получаем массив значений
  let today = new Date().toLocaleDateString("ru-RU"); //получаем текущую дату в местном формате
      
  // обрабатываем каждую запись поочередно и формируем конечный файл-квитанцию
  for (let i = 0; i < dataSource.length; i++) {
    let copy = DriveApp.getFileById(templateID).makeCopy(folder); //копируем шаблон в нашу папку
    let copyID = copy.getId(); //получаем идентификатор файла
    let resultFile = DocumentApp.openById(copyID); //получаем созданный файл по его идентификатору (чтобы работать с ним)
    resultFile.setName(dataSource[i][0]); //называем файл по ФИО клиента

    // производим в файле необходимые замены
    resultFile.replaceText('{today}', today); //текущая дата
    resultFile.replaceText('{clientName}', dataSource[i][0]); //ФИО клиента
    resultFile.replaceText('{tovarName}', dataSource[i][3]); //название товара
    resultFile.replaceText('{orderDate}', dataSource[i][2].toLocaleDateString("ru-RU")); //дата заказа (в местном формате)
    resultFile.replaceText('{personal}', dataSource[i][1]); //персональная скидка

    resultFile.saveAndClose(); //сохраняем изменения и закрываем файл
  }
}

Надеюсь, комментарии дают понимание, как работает скрипт.

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

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

Исходные данные:
Пример исходных данных

Наш шаблон:
Шаблон квитанции

Папка с сформированными файлами:Папка с файлами

И наконец один из полученных в результате обработки файлов:Пример квитанции

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

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

Данная статья — лишь пример использования скриптов для автоматизации подобных задач.

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

P.S. Если вдруг вам нужно получить итоговые файлы в pdf-формате, нужно в наш код добавить несколько строчек:

resultFile.saveAndClose(); //сохраняем изменения и закрываем файл

let pdf = resultFile.getAs('application/pdf'); //получаем наш файл в pdf формате
folder.createFile(pdf); //создаем в нашей папке копию файла в формате pdf
    
//исходный файл перемещаем в корзину
let resultFileID = resultFile.getId(); //получаем идентификатор файла
let tmpFile = DriveApp.getFileById(resultFileID); //получаем сам файл по его идентификатору
tmpFile.setTrashed(true); //помещаем файл в корзину

Захватил последнюю строчку предыдущего кода, чтобы было понятно, куда вставлять новые строки.

Если интересует более подробная информация, как создавать pdf-файлы, используя данные из гугл таблиц — прошу СЮДА.

Кстати, если наш сайт принес вам пользу и вы хотите сказать нам «Спасибо» и поддержать нас 🙏, то это можно сделать ЗДЕСЬ.

 

Рекомендую почитать:

 

Залишити коментар

Есть клиенты? Используйте CRM в Гугл Таблице для учета

Підтримати сайт! Дякуємо!

Подякувати і подтримати сайт