Заменить определение stati c на var dropSS
Первая возможность: запустить сценарий на всех листах, кроме Lookup
SpreadsheetApp.getActiveSpreadsheet().getSheets();
позволяет вы должны получить все доступные листы и запустить сценарий на всех из них.
Пример:
function iterateThroughAllSheets(){
var dataSS = "Lookup";
var primaryDataRange = "A4:A14";
var primaryDropRange = "H3:H200";
var sheets = SpreadsheetApp.getActiveSpreadsheet().getSheets();
for (var i = 0; i < sheets.length; i++){
var dropSS = sheets[i].getName();
if (dropSS != dataSS){
// continue the rest of your code as before
var primaryDropList = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(dataSS).getRange(primaryDataRange).getValues();
var primaryDropRange = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(dropSS).getRange(primaryDropRange);
var validationRule = SpreadsheetApp.newDataValidation().requireValueInList(primaryDropList).build();
primaryDropRange.setDataValidation(validationRule);
}
}
}
Вторая возможность: запустить скрипт только на самом новом листе
Предполагая, что ваши листы всегда будут добавляться к справа, самый новый лист будет иметь самый высокий индекс - соответствующий sheets.length
.
Пример:
function runOntheLastSheet(){
var dataSS = "Lookup";
var primaryDataRange = "A4:A14";
var primaryDropRange = "H3:H200";
var sheets = SpreadsheetApp.getActiveSpreadsheet().getSheets();
var sheetNumber = sheets.length;
var dropSS = sheets[sheetNumber-1].getName();
// continue the rest of your code as before
var primaryDropList = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(dataSS).getRange(primaryDataRange).getValues();
var primaryDropRange = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(dropSS).getRange(primaryDropRange);
var validationRule = SpreadsheetApp.newDataValidation().requireValueInList(primaryDropList).build();
primaryDropRange.setDataValidation(validationRule);
}
Третья возможность: запустить скрипт на активном листе
Определите var dropSS = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().getName()
и запустите сценарий, когда выбранный вами лист активен.
Для всех трех возможностей измените function onEdit()
соответственно.