根据导入的单元格值隐藏行

时间:2013-03-14 08:27:23

标签: google-apps-script google-sheets

我正在尝试隐藏L列(第12列)中包含“no”的所有行。每次打开文档时,我都会尝试使这个脚本工作。代码是:

function onOpen(e){
  var sheet = e.source.getActiveSheet();
  var r = sheet.getActiveRange();
  if (r.getColumnIndex() == 12 && r.getValue() == "no") {
    sheet.hideRows(r.getRowIndex(),1);
}
}

不幸的是,脚本不起作用。有人可以解释我的问题吗?

重要提示! L列中的所有值都是通过ImportRange函数从另一个工作表导入的。我想知道这是不是一个问题......

1 个答案:

答案 0 :(得分:1)

首次打开工作表时,传递给onOpen触发器的事件没有有用的活动范围。值r.getColumnIndex()将始终为1,因为活动范围为A1。 (它报告用户所在的单元格,并且他们没有机会移动。)

这是一种可以修改功能以执行所需操作的方法。请注意,它只适用于多表电子表格中的第一张纸。

function onOpen(e){
  var sheet = e.source.getActiveSheet();
  var values = sheet.getDataValues();
  // Check all rows except the first header row.
  for (var row = values.length-1; row > 0; row--) {
    // Check if the twelfth column contains "no"
    // Since arrays start at 0 but spreadsheet rows & columns
    // start at 1, we need to adjust by 1.
    if (values[row].length >= (12-1) && values[row][12-1] == "no") {
      // The data in column 12 of this row contains "no", so hide it.
      sheet.hideRows(row+1,1);
    }
  }
}