Я создаю сценарий, который читает строки выбранных ячеек и копирует данные в несколько документов. Когда я тестирую код с одной ячейкой, скрипт возвращает копию шаблона.
Я создал функцию скрипта Google, которая, когда пользователь выбирает ячейку:
- Считывает каждую ячейку строки, в которой находится выбранная ячейка
- Создать копию шаблона документа
- Прокрутите строку и вставьте их в скопированный документ соответственно
- Отправить сообщение пользователю, когда закончите
Процесс обычно занимает 3 секунды на сценарий, и пользователь обычно использует его 50 раз в день (а также открывает каждый документ по отдельности, чтобы распечатать их).
Я хотел бы улучшить процесс, создав новую функцию, которая позволяет пользователю выбирать несколько ячеек строк, в которых скрипт создает несколько документов (как только я это сделаю, я улучшу функцию, объединив документы в один файл. поэтому пользователю нужно будет открыть только один файл для печати). Я написал следующий код, который использует getActiveRangeList().getRanges()
для чтения выбранных строк, однако всякий раз, когда я отлаживаю код, activeRows содержит только Range.
var activeSheet = SpreadsheetApp.getActiveSheet();
var activeRows = activeSheet.getActiveRangeList().getRanges();
// header row is used to select the fillable areas of the doc and replace them
var headerRow = activeSheet.getRange(1, 1, 1, 13).getValues();
// reads number of columns, ie 13
var numberOfColumns = activeSheet.getMaxColumns();
// reads number of rows, selected by user only
var numberOfRows = activeRows[0].length;
for (var rowIndex = 0; rowIndex < activeRows.length; rowIndex++)
{
var copyFile = DriveApp.getFileById(VOUCHER_ID).makeCopy(),
copyId = copyFile.getId(),
copyDoc = DocumentApp.openById(copyId),
copyBody = copyDoc.getActiveSection()
for (var columnIndex = 0; columnIndex < activeRows[rowIndex].length; columnIndex++)
{
copyBody.replaceText('%' + headerRow[0][1] + '%', Utilities.formatDate(new Date (activeRows[rowIndex][1]), SpreadsheetApp.getActive().getSpreadsheetTimeZone(), 'dd/MM/yy \nHH:mm'))
.
.
.
}
copyDoc.setName('Voucher ' + activeRows[0][0] + " - " + activeRows[0][2])
copyDoc.saveAndClose()
}
Я попытался протестировать, выделив одну ячейку и запустив функцию, в результате чего был создан один шаблон без замены текста.