2016-11-19 74 views
0

我需要使用谷歌腳本刪除表中的所有空行。到目前爲止,我已經試過了標準的方法:如何刪除谷歌表中的所有(僞)空行

function removeEmptyRows(){ 
    var sh = SpreadsheetApp.getActiveSheet(); 
    var maxRows = sh.getMaxRows(); 
    var lastRow = sh.getLastRow(); 
    sh.deleteRows(lastRow+1, maxRows-lastRow); 
} 

這工作得很好真正空行,但是當它涉及到由「看不見的價值」從數組公式產生的佔領行會失敗,儘管這些公式使用IFERROR(1/0)

如何刪除包含空格的所有行?

+0

你的意思是最後一排的內容和片材的底部,或任何空行之間只有一排排?例如如果第1行沒有內容但第2行確實存在,是否應刪除第1行或保留原位? – Bardy

+0

在此線程中使用Mogsdad的代碼來獲取「真實」最後一行:http://stackoverflow.com/questions/6882104/faster-way-to-find-the-first-empty-row/18319032#18319032 –

回答

0

下面的腳本怎麼樣?在這個腳本中,只有空白(空格)的單元格變爲「空白」。

  1. 將所有單元格中的數據放入數組中。
  2. 使用正則表達式將所有僅有空白的元素更改爲「null」。如果單元格有一些符號,請修改正則表達式。
  3. 數組的元素被覆蓋到電子表格。

    function removeEmptyRows() { 
        var sh = SpreadsheetApp.getActiveSheet(); 
        var data = sh.getDataRange().getValues(); 
        for (var i in data){ 
         for (var j in data[i]){ 
          if (data[i][j].length > 0 && !/^[a-zA-Z0-9]+$/.test(data[i][j])){ 
           data[i][j] = null; 
          } 
         } 
        } 
        sh.getRange("A1").offset(0,0, data.length, data[0].length).setValues(data); 
    }