我一直在使用谷歌腳本一段時間了。該腳本的目的是在隱藏/取消隱藏選擇下拉列表時隱藏或隱藏三個選項卡中的某些行。我可能有兩件事我想解決,並找不到任何有用的信息在那裏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()'三次,但它的值不會改變。 –