Вчера кто-то помог мне создать макрос, который проходит по именам из списка (на листе с названием «Поставщики») и создает новый лист для каждого имени (дубликат листа с именем «Необработанные данные»). Столбец A включенновый лист фильтруется по имени, а электронная таблица также называется тем же именем.
Теперь мне нужно отредактировать макрос, чтобы посмотреть на имена в списке («Поставщики») и сравнить его со столбцом.A в «Сырых данных». Если имя отсутствует в «Сырых данных», мне не нужно создавать новый лист. Я относительно новичок в кодировании и не обладаю знаниями для его создания.
Я хотел бы вставить эту функцию в следующий код:
function factory() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var supSheet = ss.getSheetByName('Suppliers');
var supNames = supSheet.getRange(1, 1, supSheet.getLastRow(),
1).getValues();
supNames = supNames.map(function (el) {
return el[0];
});
supNames.forEach(function (name, i) {
doTheWork(ss, name, i, supNames);
});
}
function doTheWork(ss, name, i, allNames) {
if (!name || name.length == 0) return;
ss.getSheetByName('Raw Data').activate();
var nSheet = ss.duplicateActiveSheet();
nSheet.setName(name);
nSheet.getRange('A:L').activate();
nSheet.getRange('A:L').createFilter();
nSheet.getRange('A1').activate();
var values = [''].concat(allNames);
values.splice(i + 1, 1);
var criteria = SpreadsheetApp.newFilterCriteria()
.setHiddenValues(values)
.build();
nSheet.getFilter().setColumnFilterCriteria(1, criteria);
nSheet.getRange('G:G').activate();
nSheet.getRange('C1').activate();
nSheet.getFilter().sort(3, true);
}