从另一个工作表检索活动单元格的对应行数组

时间:2019-05-12 02:02:53

标签: javascript google-apps-script google-sheets

我正在尝试将脚本的处理方式从从列收集数组转换为从行收集数组。不幸的是,在此过程中,我设法将其弄乱了。我可以获得正确的列,但似乎无法获得正确的行。

  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返回到最后一列。

Estimate Master Sheet

dynamicDropDowns.gs第34行

1 个答案:

答案 0 :(得分:1)

刚开始学习时,没有什么是“容易的”。无论如何,我可以通过更改来使它工作

var itemValidationRange = itemDVss.getRange(itemIndex,3,itemDVss.getLastColumn());

var itemValidationRange = itemDVss.getRange(activeCell.getRow(),3,1,itemDVss.getLastColumn());

可能不是最好的方法,但是它有效!