Если вы используете гугл таблицы в своей работе, то иногда необходимо сформировать некий 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 на базе Google таблиц»
- «10 бирж фриланса и удаленной работы для новичков и профи: список и рекомендации по заработку»
- «Доход на партнерских/реферальных программах: примеры и полезные советы»