2016-01-06 29 views
2

我想實現一個Google腳本,這樣如果列A中的任何單元格包含任何指定的文本,那麼它將刪除整行。這是我正在與...如何刪除Google表中的行如果「列A」單元格包含給定的文本

function onEdit() { 
    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var s = ss.getSheetByName('Sheet1'); // change to your own 
    var values = s.getDataRange().getValues(); 

    for (var row in values) 
    if (values[row][0] == 'glass') 
     s.deleteRow(parseInt(row)+1); 

    else if (values[row][0] == 'Glass') 
     s.deleteRow(parseInt(row)+1); 

}; 

我將包括多個不同的標準來爲我清理我的電子表格。一些行可能包括「汽車玻璃」,「汽車玻璃」,「玻璃修理」,「玻璃博士」,「玻璃史密斯」等...

目前,此代碼刪除列A單元格「玻璃」或「玻璃」。

請幫助!

回答

2

您必須從最後刪除行。如果您從頭開始,並刪除一行,則該行下的所有行現在將與數組中的值的順序不同步。刪除第一行後,刪除的所有其他行可能會是錯誤的行,除非您調整了行號的代碼。嘗試使用此代碼:

function cleanRows() { 
    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var sh = ss.getSheetByName('Sheet1'); 

    var colA_Vals = sh.getRange(1, 1, sh.getLastRow(), 1).getValues(); 

    var i = 0, 
     j = 0, 
     thisVal, 
     chkVal, 
     arrayValsToChk = ['glass']; 

    for (i=colA_Vals.length;i>0;i-=1) { 
    thisVal = colA_Vals[i-1][0]; 
    //Logger.log('i: ' + i); 

    for (j=0;j<arrayValsToChk.length;j+=1) { 
     chkVal = arrayValsToChk[j].toLowerCase() //Change to all lower case; 

     if (thisVal.indexOf(chkVal) !== -1) { 
     ss.deleteRow(i); 
     }; 
    }; 
    }; 
}; 

請注意數組中所有要檢查的值。將新值添加到數組以檢查其他值。

+0

桑迪,差不多就在那裏。我看到你做了什麼,但是,它仍然不能正常工作,因爲我需要它。它將刪除與數組中指定的數據完全匹配的行,但我需要它刪除包含這些關鍵字的所有行。例如,其中一些值包括「玻璃人」,「玻璃博士」,「汽車玻璃修理」等。我需要它刪除任何包含「玻璃」一詞的任何內容。我正排序大約1500行,需要自動清理。 – CFraley

+0

我對希望爲您工作的代碼做了一些更改。 –

+0

這樣!非常感謝!!! – CFraley

1

桑迪當然在如何刪除行是正確的。這可能是最重要的一點。我還建議將字符串更改爲小寫,因此您只需執行一項測試。試試這個:

function onEdit() { 
    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var s = ss.getSheetByName('Sheet1'); // change to your own 
    var values = s.getDataRange().getValues(); 
    for(var i=values.length;i>0;i-=1){ 
    var lcVal=values[i-1][0].toLowerCase() //Change to all lower case 
    var index = lcVal.indexOf("glass"); //now you only have to check for contains "glass" 
    if (lcVal.indexOf("glass") > -1){ 
    s.deleteRow(i)}; 
    }} 
相關問題