我正在Google工作表中构建可靠的(过滤的)下拉列表,其中一个下拉列表中的值取决于另一个列表的选择。尽管是相对简单的安排,但我遇到了getValues()的问题 返回二维数组。
设置如下:
function dependableDropdown() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var activity = ss.getSheetByName("Activity");
var sheetData = ss.getSheetByName("$SheetData");
var activeCell = activity.getActiveCell();
if(activeCell.getColumn() == 5 && activeCell.getRow() > 1){
activeCell.offset(0, 2).clearContent().clearDataValidations();
var inspectionTypes = sheetData.getRange(1, 5, 1, 7).getValues();
var selectedValue = activeCell.getValue();
var inspectionTypesIndex = inspectionTypes[0].indexOf(selectedValue) + 1;
var validationRange = sheetData.getRange(2, inspectionTypesIndex, sheetData.getLastRow());
var validationRule = SpreadsheetApp.newDataValidation().requireValueInRange(validationRange).build();
activeCell.offset(0, 2).setDataValidation(validationRule);
};
};
由inspectionTypesIndex
返回的值似乎是正确的(SIRE = 1,OVID = 2等等),但是当我在列E中选择数据时,我将错误的数据输入到G列中。
感谢您的帮助。
谢谢
对应的屏幕:
答案 0 :(得分:1)
如果您获得inspectionTypesIndex
的书面信息(SIRE = 1,OVID = 2,等等),并且有选项列:E,F,G,...,则应在其中引用validationRange
通过以下方式:
var validationRange = sheetData.getRange(2, inspectionTypesIndex + 4, sheetData.getLastRow());
因为E列为第5位,但“ SIRE”索引等于1。