我有一个电子表格,用作合同中列出设备的表格。在给定的行中,选择分销商(col F)将使用基于另一个工作表中的数据的下拉菜单填充“制造商”字段(col E)。我现在需要的是模型字段(col D)填充一个下拉列表,该列表基于我已经定义的一系列范围(l01,l11,l12,l13)的过滤,来自col的值E.
到目前为止,这是我的代码:
function onEdit()
{
var ss = SpreadsheetApp.getActiveSpreadsheet(),
sheet = ss.getActiveSheet(),
name = sheet.getName();
if (name != 'Addendum B') return;
var range = sheet.getActiveRange(),
col = range.getColumn();
if (col != 5) return;
var val = range.getValue(),
ctlg0 = SpreadsheetApp.openById("1nbCJOkpIQxnn71sJPj6X4KaahROP5cMg1SI9xIeJdvY"),
ctlg1 = SpreadsheetApp.openById("1Jzue8G0dAJC5CiY5_s-thaOiYEyfeJScb2ITNWa_dVQ"),
c01 = ctlg0.getSheetByName('MISC_CATALOG'),
c11 = ctlg1.getSheetByName('Part #A-I'),
c12 = ctlg1.getSheetByName('Part #J-R'),
c13 = ctlg1.getSheetByName('Part #S-9'),
l01 = c01.getRange("A2:B"),
l11 = c11.getRange("A2:B"),
l12 = c12.getRange("A2:B"),
l13 = c13.getRange("A2:B"),
//data = dv.getDataRange().getValues(),
//catCol = data[0].indexOf(val),
//list = [];
Logger.log(catCol)
for (var i = 1, len = 100; i < len; i++)
list.push(data[i][catCol]);
var listRange = dv.getRange(2,catCol +1,dv.getLastRow() - 1, 1)
Logger.log(list)
var cell = sheet.getRange(range.getRow(), col-1)
var rule = SpreadsheetApp.newDataValidation()
.requireValueInRange(listRange)
.build();
cell.setDataValidation(rule);
Logger.log(cell.getRow())
}
我已经注释了我用完编码知识的地方,我自己实现了这一点。上面的代码基于我对col E的现有数据验证。可以找到样本表here。
我对编码有基本的了解,并且主要通过分解示例代码和阅读GAS在线参考资料来自学。对此的任何帮助都会有所帮助,但请尽可能详细地提供解释,以便我能够学习如何使这个解决方案适应未来的项目。