我已经编写了这个应该每天晚上运行的脚本,但问题是执行时间太长,服务器会关闭它。我们有一个电子表格作为日历来组织我们的学校制作,我们希望它能自动隐藏已经过去的日子。我在大约8个月前编写了这个脚本,花了大约6-7个小时才开始工作,并在电子表格足够长之前花费了很长时间。下面是该脚本:在Google表格中隐藏行的最有效方法是什么?
function hidePastDays(){
var ss = SpreadsheetApp.getActive();
var s = ss.getSheetByName("OVERVIEW");
var s2 = ss.getSheetByName("settings");
var rows = s.getMaxRows();
var today = s2.getRange(3, 2).getValue();
var allsheets = ss.getSheets();
s.showRows(1, rows);
var dates = s2.getRange(3,4,rows-2).getValues();
for (var d=0; d < dates.length; d++){
if (dates[d]<today-2){
s.hideRows(d+3, 1);
for (var g in allsheets){
var sheet=allsheets[g];
if (sheet.getSheetName() == "OVERVIEW" || sheet.getSheetName() == "settings"){}
else {
sheet.hideRows(d+3, 1);
}
}
}
}
}
我想这一定是容易只是上下扫描到正确的行,然后隐藏所有的为范围,因为我觉得剧本做它一次一个。
感谢您提供的任何帮助。
按日期排序的行是?如果代码找到具有第一个当前日期的行,如果代码隐藏所有从3行到该行减1行的行,会如果工作?这可以在一次操作中完成,而不是逐个隐藏。 –
是的,他们是。日期是由电子表格自动添加的。但是,它需要查找当前日期,然后再移回一行,因为如果多个活动在同一天不重复日期,则日期部分留空。 –