У меня есть следующий скрипт Google Apps onEdit, который просматривает таблицу в столбцах A: D на моем листе «Списки раскрывающегося списка». Это работает для раскрывающегося списка в столбце C листа «Обучение HISOP», когда в раскрывающемся списке в столбце A того же листа выбрана ветвь:
//Dynamic Dropdown for HISOP Training
{
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var tablists = 'Dropdown Lists';
var tabValidation = 'HISOP Training';
var ss = spreadsheet.getActiveSheet();
var datass = spreadsheet.getSheetByName(tablists);
var activeCell = ss.getActiveCell();
if (
activeCell.getColumn() == 1 &&
activeCell.getRow() > 1 &&
ss.getSheetName() == tabValidation
) {
activeCell
.offset(0, 2)
.clearContent()
.clearDataValidations();
var base = datass.getRange(2, 1, 1, 5).getValues();
var baseIndex = base[0].indexOf(activeCell.getValue()) + 1;
Logger.log(baseIndex);
if (baseIndex != 0) {
//Dynamic dropdown for 'Employee'
var validationRange = datass.getRange(6, baseIndex, 150);
var validationRule = SpreadsheetApp.newDataValidation().requireValueInRange(validationRange).build();
activeCell.offset(0, 2).setDataValidation(validationRule);
}
}
if (ss.getSheetName() == tabValidation) {
var lock = LockService.getScriptLock();
if (lock.tryLock(0)) {
autoid_(ss);
lock.releaseLock();
}
}
}
Теперь я также хочу, чтобы раскрывающийся список в столбце D листа «Обучение HISOP» выбирал из диапазона BO: BR листа «Выпадающий список», когда ветвь в Столбец A листа «Обучение HISOP» выбран, но я не знаю, как написать для этого сценарий.
Это изображение моего листа «Обучение HISOP»:
This is a link to a sanitised version of my spreadsheet:
Таблица
Я был бы очень признателен за помощь с этим.
Окончательный ответ:
function myOnEdit(e){
var sheet = SpreadsheetApp.getActive().getSheetByName('HISOP Training');
var sheet2 = SpreadsheetApp.getActive().getSheetByName('Dropdown Lists');
var value = e.value;
var col = e.range.getColumn();
var row = e.range.getRow();
if(col==1 && e.range.getValue()=='New York' && row>2 && e.range.getSheet().getName()=='HISOP Training'){
// 2 is for dropdown D
var dropdownData = sheet2.getRange("A6:A150").getValues().flat();
var dropdownData2 = sheet2.getRange("BO4:BO150").getValues().flat();
var allowDropdown = sheet.getRange(row, col+2).clearDataValidations().clearContent();
var allowDropdown2 = sheet.getRange(row, col+3).clearDataValidations().clearContent();
var rule = SpreadsheetApp.newDataValidation().requireValueInList(dropdownData, true).build();
var rule2 = SpreadsheetApp.newDataValidation().requireValueInList(dropdownData2, true).build();
allowDropdown.setDataValidation(rule);
allowDropdown2.setDataValidation(rule2);
}
if(col==1 && e.range.getValue()=='London' && row>2 && e.range.getSheet().getName()=='HISOP Training'){
var dropdownData = sheet2.getRange("B6:B150").getValues().flat();
var dropdownData2 = sheet2.getRange("BP4:BP150").getValues().flat();
var allowDropdown = sheet.getRange(row, col+2).clearDataValidations().clearContent();
var allowDropdown2 = sheet.getRange(row, col+3).clearDataValidations().clearContent();
var rule = SpreadsheetApp.newDataValidation().requireValueInList(dropdownData, true).build();
var rule2 = SpreadsheetApp.newDataValidation().requireValueInList(dropdownData2, true).build();
allowDropdown.setDataValidation(rule);
allowDropdown2.setDataValidation(rule2);
}
if(col==1 && e.range.getValue()=='Paris' && row>2 && e.range.getSheet().getName()=='HISOP Training'){
var dropdownData = sheet2.getRange("C6:C150").getValues().flat();
var dropdownData2 = sheet2.getRange("BQ4:BQ150").getValues().flat();
var allowDropdown = sheet.getRange(row, col+2).clearDataValidations().clearContent();
var allowDropdown2 = sheet.getRange(row, col+3).clearDataValidations().clearContent();
var rule = SpreadsheetApp.newDataValidation().requireValueInList(dropdownData, true).build();
var rule2 = SpreadsheetApp.newDataValidation().requireValueInList(dropdownData2, true).build();
allowDropdown.setDataValidation(rule);
allowDropdown2.setDataValidation(rule2);
}
if(col==1 && e.range.getValue()=='Tokyo' && row>2 && e.range.getSheet().getName()=='HISOP Training'){
var dropdownData = sheet2.getRange("D6:D150").getValues().flat();
var dropdownData2 = sheet2.getRange("BR4:BR150").getValues().flat();
var allowDropdown = sheet.getRange(row, col+2).clearDataValidations().clearContent();
var allowDropdown2 = sheet.getRange(row, col+3).clearDataValidations().clearContent();
var rule = SpreadsheetApp.newDataValidation().requireValueInList(dropdownData, true).build();
var rule2 = SpreadsheetApp.newDataValidation().requireValueInList(dropdownData2, true).build();
allowDropdown.setDataValidation(rule);
allowDropdown2.setDataValidation(rule2);
}
}