我已經編寫了這個應該每天晚上運行的腳本,但問題是執行時間太長,服務器會關閉它。我們有一個電子表格作爲日曆來組織我們的學校製作,我們希望它能自動隱藏已經過去的日子。我在大約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行的行,會如果工作?這可以在一次操作中完成,而不是逐個隱藏。 –
是的,他們是。日期是由電子表格自動添加的。但是,它需要查找當前日期,然後再移回一行,因爲如果多個活動在同一天不重複日期,則日期部分留空。 –