我正在尝试将脚本的处理方式从从列收集数组转换为从行收集数组。不幸的是,在此过程中,我设法将其弄乱了。我可以获得正确的列,但似乎无法获得正确的行。
if(activeCell.getColumn() == 2 && activeCell.getRow() > 1){
activeCell.offset(0, 1).clearContent().clearDataValidations();
var item = itemDVss.getRange(activeCell.getRow(),activeCell.getColumn(),itemss.getLastColumn()).getValues();
var itemIndex = item[0].indexOf(activeCell.getValue()) + 2;
if(itemIndex != 0){
var itemValidationRange = itemDVss.getRange(itemIndex,3,itemDVss.getLastColumn());
var itemValidationRule = SpreadsheetApp.newDataValidation().requireValueInRange(itemValidationRange).build();
activeCell.offset(0, 1).setDataValidation(itemValidationRule);
}
}
脚本应在“估计”表中找到活动单元格,并从“项目”表中返回相应的值(偏移+1列)。因此,当在“估计!B11”单元格中时,脚本应将行数组从Items!C11返回到最后一列。
答案 0 :(得分:1)
刚开始学习时,没有什么是“容易的”。无论如何,我可以通过更改来使它工作
var itemValidationRange = itemDVss.getRange(itemIndex,3,itemDVss.getLastColumn());
到
var itemValidationRange = itemDVss.getRange(activeCell.getRow(),3,1,itemDVss.getLastColumn());
可能不是最好的方法,但是它有效!