0

我试图隐藏 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 函数从另一个工作表导入的。请问是不是有问题...

4

1 回答 1

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);
    }
  }
}
于 2013-06-14T01:52:51.950 回答