我正在尝试隐藏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函数从另一个工作表导入的。我想知道这是不是一个问题......
答案 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);
}
}
}