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

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

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

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

Еще примечание. Я приведу пример своего варианта реализации задачи. Если у вас есть другое решение, можете поделиться им в комментариях к статье. А мы продолжаем.

Вначале сам алгоритм.

Есть лист, куда скриптом либо иным способом собираются некие данные, из которых мы будем формировать наш файл. В сам процесс формирования данных углубляться не будем. Разберем, как из полученного листа-прототипа сохранить pdf-файл.

let tempFiles = SpreadsheetApp.create(fileName); //создаем временный файл

Данной строкой создадим временный файл с именем fileName. Ссылка на файл для работы с ним — в переменной tempFiles.

let source = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sheetNameInvoice); //лист для копирования

Здесь мы определяем лист с исходными данными (sheetNameInvoice), которые будем копировать в файл.

source.copyTo(tempFiles); //копируем заданный лист

Копируем лист с исходными данными в созданный ранее временный файл.

tempFiles.deleteSheet(tempFiles.getSheets()[0]); //удаляем первый лист (Лист1)

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

tempFiles.getSheets()[0].deleteColumns(6,10); //удаляем служебные столбцы

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

let pdf = tempFiles.getAs('application/pdf'); //из временного файла получаем файл pdf
let folder = DriveApp.getFolderById(folderID); //получаем папку по ее идентификатору, куда будем сохранять наш файл
pdf.setName(fileName); //задаем имя файлу pdf
folder.createFile(pdf); //сохраняем (создаем) файл pdf в заданной папке

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

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

//исходный файл перемещаем в корзину
let a1 = tempFiles.getId();
let tmpFile = DriveApp.getFileById(a1);
tmpFile.setTrashed(true);

Задача выполнена — требуемый pdf-файл создан у нужной папке.

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

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

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

 

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

 

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

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

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

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