Мне нужно создать макрос в GoogleSheets, который будет искать разные имена в списке на листе с именем «Поставщики» и создавать новый лист для каждого имени. Каждый лист должен быть копией отдельного листа под названием «Данные». Столбец А на новом листе должен быть отфильтрован по имени. Каждый лист также должен быть назван в честь элемента в списке.
У меня есть работающий макрос, чтобы создать лист для каждого имени независимо, но я не могу понять, как сделать этот цикл через список имен и автоматически сгенерировать новый лист для каждого имени.
Код, который я сейчас использую, приведен ниже:
function Supplier1() {
var spreadsheet = SpreadsheetApp.getActive();
spreadsheet.getRange('A1').activate();
spreadsheet.setActiveSheet(spreadsheet.getSheetByName('Data'), true);
spreadsheet.duplicateActiveSheet();
spreadsheet.getActiveSheet().setName('Supplier1');
spreadsheet.getRange('A:L').activate();
spreadsheet.getRange('A:L').createFilter();
spreadsheet.getRange('A1').activate();
var criteria = SpreadsheetApp.newFilterCriteria()
.setHiddenValues(['', 'Supplier2', 'Supplier3', 'Supplier4','Supplier5'])
.build();
spreadsheet.getActiveSheet().getFilter().setColumnFilterCriteria(1,
criteria);
spreadsheet.getRange('G:G').activate();
spreadsheet.getRange('C1').activate();
spreadsheet.getActiveSheet().getFilter().sort(3, true);
spreadsheet.getRange('D1').activate();
spreadsheet.getActiveSheet().getFilter().sort(4, true);
function hideRows() {
["Supplier1"].forEach(function (s) {
var sheet = SpreadsheetApp.getActive()
sheet.hide(sheet.getRange('B:B'))
sheet.getRange('B:B')
.getValues()
.forEach(function (r, i) {
if (!r[0]) sheet.hideRows(i + 1)
});
});
}
}