【发布时间】:2021-02-04 20:47:07
【问题描述】:
我创建了一个 google 表格,其中包含基于 this tutorial 的相关下拉列表。 Copy of the sheet I've created. 我对依赖下拉列表的功能感到满意,但是我的目标是从“材料”表(B:I 列)中连续复制与从依赖中选择的选项相对应的所有数据“crop_specific”表的 E 列中的下拉列表,将此信息复制到 E:L 列。如果更改了 D 列的选择,我想保留当前脚本的功能,即清除 E 列中的内容,并将其扩展到整行。任何帮助将非常感激。脚本代码如下。
var ws = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("crop_specific");
var wsMaterials = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("materials");
var options = wsMaterials.getRange(2,1,wsMaterials.getLastRow()-1,9).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();
if(wsName == "crop_specific" && c === 4 && r>1){
if(val === ""){
ws.getRange(r,5).clearContent();
ws.getRange(r,5).clearDataValidations();
}else {
ws.getRange(r,5).clearContent();
var filteredOptions = options.filter(function(o){ return o[0] ===val });
var listToApply = filteredOptions.map(function(o){return o[1] });
var cell = ws.getRange(r,5);
applyValidationToCell(listToApply,cell);
}
}
}
function applyValidationToCell(list,cell){
var rule = SpreadsheetApp
.newDataValidation()
.requireValueInList(list)
.setAllowInvalid(false)
.build();
cell.setDataValidation(rule);
}
【问题讨论】:
标签: google-apps-script google-sheets drop-down-menu dependencies