[英]How to apply Google Apps Script to multiple sheets (dependent drop downs)
当我尝试运行从@Rafa Guillermo获得的脚本时收到此消息
SyntaxError: Unexpected token '{' Line: 11 File: Code.gs
线:11 是
if (!(only.includes(e.range.getSheet().getName())) {
return;
}
这是整个代码:
var optionsWsName = "드롭다운 확인";
var wsOptions = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(optionsWsName);
var options = wsOptions.getRange(2, 1, wsOptions.getLastRow()-1, 4).getValues();
var only = ["2021 1월", "2021 2월", "2021 3월"];
var firstLevelColumn = 3;
var secondLevelColumn = 4;
var thirdLevelColumn = 5;
var fourthLevelColumn = 6;
function onEdit(e) {
if (!(only.includes(e.range.getSheet().getName())) {
return;
}
var activeCell = e.range;
var val = activeCell.getValue();
var row = activeCell.getRow();
if (row <= 1) return;
var column = activeCell.getColumn();
if(c === firstLevelColumn){
applyFirstLevelValidation(val, r);
} else if(c === secondLevelColumn){
applySecondLevelValidation(val, r);
} else if(c === thirdLevelColumn){
applyThirdLevelValidation(val, r);
}
}
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();
ws.getRange(r, fourthLevelColumn).clearContent();
ws.getRange(r, fourthLevelColumn).clearDataValidations();
} else {
ws.getRange(r, secondLevelColumn).clearContent();
ws.getRange(r, secondLevelColumn).clearDataValidations();
ws.getRange(r, thirdLevelColumn).clearContent();
ws.getRange(r, thirdLevelColumn).clearDataValidations();
ws.getRange(r, fourthLevelColumn).clearContent();
ws.getRange(r, fourthLevelColumn).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);
}
}
function applySecondLevelValidation(val, r){
if(val === ""){
ws.getRange(r, thirdLevelColumn).clearContent();
ws.getRange(r, thirdLevelColumn).clearDataValidations();
ws.getRange(r, fourthLevelColumn).clearContent();
ws.getRange(r, fourthLevelColumn).clearDataValidations();
} else {
ws.getRange(r, thirdLevelColumn).clearContent();
ws.getRange(r, thirdLevelColumn).clearDataValidations();
ws.getRange(r, fourthLevelColumn).clearContent();
ws.getRange(r, fourthLevelColumn).clearDataValidations();
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);
}
}
function applyThirdLevelValidation(val, r){
if(val === ""){
ws.getRange(r, fourthLevelColumn).clearContent();
ws.getRange(r, fourthLevelColumn).clearDataValidations();
} else {
ws.getRange(r, fourthLevelColumn).clearContent();
var firstlevelColValue = ws.getRange(r, firstLevelColumn).getValue();
var secondlevelColValue = ws.getRange(r, secondLevelColumn).getValue();
var filteredOptions = options.filter(function(o){ return o[0] === firstlevelColValue && o[1] === secondlevelColValue && o[2] === val });
var listToApply = filteredOptions.map(function(o){ return o[3] });
var cell = ws.getRange(r, fourthLevelColumn);
applyValidationToCell(listToApply,cell);
}
}
function applyValidationToCell(list,cell){
var rule = SpreadsheetApp
.newDataValidation()
.requireValueInList(list)
.setAllowInvalid(false)
.build();
cell.setDataValidation(rule)
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.