- 当更改“A”列和“B”列的下拉列表时,您希望将“选项”表中“C”列的相关值放到“C”列的单元格中.
- 例如,当“A”列和“B”列的下拉列表为
apple和1_dormant时,您希望将Phytophthora collar rot, European red mite, Scale的值放入“C”列的单元格中。
- 当“A”列和“B”列的下拉列表发生变化时,您想清除
master工作表的“C”列。
- 您希望通过 Google Apps 脚本使用 OnEdit 事件触发器来实现此目的。
如果我的理解是正确的,那么这个答案呢?请认为这只是几个可能的答案之一。
修改点:
- 在你的脚本中,我认为
listToApply的applySecondLevelValidation的功能可以使用。使用它,可以将值放入“C”列。
- 关于清除“C”列的脚本,我觉得可以用
ws.getRange(2, 3, ws.getLastRow() - 1, 1).clearContent();。
修改脚本:
修改脚本时,请修改applyFirstLevelValidation和applySecondLevelValidation的功能如下。
function applyFirstLevelValidation(val,r){
ws.getRange(2, 3, ws.getLastRow() - 1, 1).clearContent(); // Added
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);
}
}
function applySecondLevelValidation(val,r){
ws.getRange(2, 3, ws.getLastRow() - 1, 1).clearContent(); // Added
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]]}); // Modified
ws.getRange(r,thirdLevelColumn,listToApply.length, 1).setValues(listToApply); // Modified
}
}
注意:
参考资料:
如果我误解了您的问题并且这不是您想要的方向,我深表歉意。