2014-02-14 134 views
1

這實在是我第一次嘗試讓谷歌腳本工作,所以請原諒我的經驗不足。谷歌電子表格腳本刪除新行

我有一個電子表格,如果它超過特定的數量(我的情況是八),我想要刪除行。

我認爲這應該工作,但我必須錯過一些東西。我的問題是沒有行被刪除,但沒有給出任何錯誤。

function killNewRows() { 
    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var sheet = ss.getActiveSheet(); 
    var data = sheet.getDataRange(); 

    if (data.length > 8) { 
    for (var row = data.length; row >= 9; row--) { 
     sheet.deleteRow(row); 
     } 
    } 
    } 

回答

0

有這類程序的特殊的方法......這裏是一個工作示例:

function killNewRows() { 
    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var sheet = ss.getActiveSheet(); 
    var lastRow = sheet.getLastRow(); 
    var maxRow = sheet.getMaxRows(); 
    if(lastRow>8){ 
    sheet.deleteRows(9, maxRow-8); 
    } 
} 

順便說一句,請注意deleteRows(start,numberOfRows)方法,這將是比刪除一個接一個的每一行快。


編輯:板材例如here,使自己的副本,不要忘了從腳本編輯器> ressources添加一個觸發器>從電子表格>的onChange添加新的觸發>。

您當然可以通過簡單添加一個調用此函數的「on change」觸發器來自動完成所有操作。

+0

謝謝我感謝您的幫助。我完全刪除了我正在處理的內容,並在添加「更改」觸發器並授權腳本運行它之後,完全複製了您所寫的內容,但仍未爲我刪除行。可能在我的一端有一些用戶錯誤。 – user3310942

+0

新增:執行記錄顯示它在這部分之後結束,即使我正在使用它的工作表現在有28行[14-02-14 16:26:33:863 AST] Sheet.getMaxRows()[0.015秒] [14-02-14 16:26:33:864 AST]執行成功[總運行時間爲0.422秒] – user3310942

+0

我用鏈接編輯了我的答案,請在關於觸發器的建議之後嘗試。 –

相關問題