我一直在使用谷歌脚本一段时间了。该脚本的目的是在隐藏/取消隐藏选择下拉列表时隐藏或隐藏三个选项卡中的某些行。我可能有两件事我想解决,并找不到任何有用的信息在那里interwebs:谷歌脚本 - 超时和简化
1)我认为脚本按操作的顺序运行。所以当选择一个下拉选项卡时,它会立即产生结果,因为这是脚本的第一个“层”。第二个选项卡比较慢,因为它是脚本的第二个“图层”,第三个选项卡需要相当长的一段时间,因为它是第三个“图层”。有没有一种方法来简化这个脚本,使制表符的功能一样快?
2)在第三个标签上,好像脚本会超时。所有的行都会取消隐藏,但是当你进入隐藏它们时,它会停在某一行。但是,如果您转到脚本并手动运行脚本,它将完全正常工作。下面是我一直使用的脚本(我删了很多行下面,否则这将是相当长的):
function onEdit(e) {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var s = ss.getSheetByName("TX MD 2017");
var row = s.getRange('C2').getValues();
s.showRows(1);
for(var i=0; i< row.length; i++){ if(row[i] == 'hide')
{ s.hideRows(5);
s.hideRows(7);
s.hideRows(9);}
else if(row[i] == 'unhide'){s.unhideRow(ss.getDataRange());}
}
s = ss.getSheetByName("DC MD 2017");
row = s.getRange('C2').getValues();
s.showRows(1);
for(var i=0; i< row.length; i++){ if(row[i] == 'hide')
{ s.hideRows(6);
s.hideRows(7);
s.hideRows(9); }
else if(row[i] == 'unhide'){s.unhideRow(ss.getDataRange());}
}
s = ss.getSheetByName("ATL MD 2017");
row = s.getRange('C2').getValues();
s.showRows(1);
for(var i=0; i< row.length; i++){ if(row[i] == 'hide')
{s.hideRows(6);
s.hideRows(7);
s.hideRows(9);}
else if(row[i] == 'unhide'){s.unhideRow(ss.getDataRange());}
}
}
由于'c2'是单细胞,我觉得'for'是没有必要的。你也调用过'ss.getDataRange()'三次,但它的值不会改变。 –