Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- var mainWsName = ["Car", "Dota"];
- var optionsWsName = {Car: "Car_L", Dota: "Heroes"};
- var firstLevelColumn = 1;
- var secondLevelColumn = 2;
- var thirdLevelColumn = 3;
- var ws;// = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(mainWsName);
- var wsOptions;// = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(optionsWsName);
- var options;// = wsOptions.getRange(1, 1, wsOptions.getLastRow(),3).getValues();
- function onEdit(e) {
- var activeCell = e.range;
- var val = activeCell.getValue();
- var r = activeCell.getRow();
- var c = activeCell.getColumn();
- var wsName = activeCell.getSheet().getName();
- ws = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
- wsOptions = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(optionsWsName[wsName]);
- options = wsOptions.getRange(1, 1, wsOptions.getLastRow(),3).getValues();
- Logger.log(ws.getName(), wsOptions.getName());
- if (mainWsName.indexOf(wsName)>-1 && c === firstLevelColumn && r > 1) {
- applyFirstLevelValidation(val,r );
- } else if (mainWsName.indexOf(wsName)>-1 && c === secondLevelColumn && r > 1) {
- applySecondLevelValidation(val,r );
- }
- } //end onEdit
- function applyFirstLevelValidation(val,r ) {
- if (val === "") {
- ws.getRange(r, secondLevelColumn).clearContent();
- ws.getRange(r, secondLevelColumn).clearDataValidations();
- ws.getRange(r, thirdLevelColumn).clearContent();
- ws.getRange(r, thirdLevelColumn).clearDataValidations();
- } else {
- ws.getRange(r, secondLevelColumn).clearContent();
- ws.getRange(r, secondLevelColumn).clearDataValidations();
- ws.getRange(r, thirdLevelColumn).clearContent();
- ws.getRange(r, thirdLevelColumn).clearDataValidations();
- var filteredOptions = options.filter(function(o) { return o[0] === val });
- var listToApply = filteredOptions.map(function(o) { return o[1] });
- var cell = ws.getRange(r, secondLevelColumn);
- applyValidationToCell(listToApply, cell);
- }
- } //end FirstLevel
- function applySecondLevelValidation(val,r ) {
- if (val === "") {
- ws.getRange(r, thirdLevelColumn).clearContent();
- ws.getRange(r, thirdLevelColumn).clearDataValidations();
- } else {
- ws.getRange(r, thirdLevelColumn).clearContent();
- var firstLevelColValue = ws.getRange(r, firstLevelColumn).getValue();
- var filteredOptions = options.filter(function(o) { return o[0] === firstLevelColValue && o[1] === val });
- var listToApply = filteredOptions.map(function(o) { return o[2] });
- var cell = ws.getRange(r, thirdLevelColumn);
- applyValidationToCell(listToApply, cell);
- }
- } //end SecondLevel
- function applyValidationToCell(list, cell) {
- var rule = SpreadsheetApp.newDataValidation().requireValueInList(list).setAllowInvalid(false).build();
- cell.setDataValidation(rule);
- }
Advertisement
Add Comment
Please, Sign In to add comment