2017-07-07 41 views
0

我想創建一個腳本,讓我刪除Google電子表格中包含特定文本值的行。充其量我是一個非常新手的編碼器,並嘗試修改我發現的幾個類似的腳本。我可以工作的唯一一個是以下。然而,我的價值清單將會很長,可能有數百個詞條,而我在這裏的腳本將爲這些價值構建起來很麻煩。我猜測,讓數組或第二個電子表格中的值會好得多。它也是區分大小寫的。我試圖從其他腳本中提取代碼以更改爲全部小寫,但我無法獲得任何工作。刪除Google表格中包含來自陣列或第二個電子表格的值的行

如果你願意分享你的集體知識,我該如何修改以達到我的目標?

function readRows() { 
var sheet = SpreadsheetApp.getActiveSheet(); 
var rows = sheet.getDataRange(); 
var numRows = rows.getNumRows(); 
var values = rows.getValues(); 

var rowsDeleted = 0; 
for (var i = 0; i <= numRows - 1; i++) { 

var row = values[i]; 

    if (row[1].indexOf("test") > -1) { 
sheet.deleteRow((parseInt(i)+1) - rowsDeleted); 
rowsDeleted++; 
} 

if (row[1].indexOf("TEST") > -1) { 
sheet.deleteRow((parseInt(i)+1) - rowsDeleted); 
rowsDeleted++; 
} 

} 
}; 

回答

1

試試這個。如果你刪除了行,最好從底部開始,否則它會混淆你的索引。 DelA是您希望基於行刪除的字符串數組。如果indexOf函數找到其中一個字符串,則返回大於-1的值。一旦找到一個,它會在刪除它之後停在該行上並向上移動一個。行號是i + 1.我沒有假設你有一個標題行。如果你有一個標題行,然後調整自己的停止條件爲i> 0

function deleteMyRows() 
{ 
var delA=['Test','Others']; 
var sht = SpreadsheetApp.getActiveSheet(); 
var rng = sht.getDataRange(); 
var values = rng.getValues(); 
for (var i = values.length-1; i > -1; i--) 
{ 
    for(var j=0;j<values[i].length;j++) 
    { 
    for(var k=0;k<delA.length;k++) 
    { 
     if(values[i][j].indexOf(delA[k])>-1) 
     { 
     sht.deleteRow(i + 1); 
     break; 
     } 
    } 
    } 
} 
} 

因此,也許這是你真正需要的:

function deleteMyRows() 
{ 
var delA=['Test','Others']; 
var sht = SpreadsheetApp.getActiveSheet(); 
var rng = sht.getDataRange(); 
var values = rng.getValues(); 
for (var i = values.length-1; i > -1; i--) 
{ 
    for(var j=0;j<values[i].length;j++) 
    { 
    for(var k=0;k<delA.length;k++) 
    { 
     var lcval=String(values[i][j]).toLowerCase(); 
     var lcdel=String(delA[k]).toLowerCase(); 
     if(lcval.indexOf(lcdel)>-1) 
     { 
     sht.deleteRow(i + 1); 
     break; 
     } 
    } 
    } 
} 
} 
+0

謝謝!這有助於組織條款並使我的列表更容易建立。我仍然在尋找一種在列表中只輸入小寫字母的方法,但讓腳本刪除所有大小寫變化,就像我認爲正在發生在下面的腳本行中一樣。我已經嘗試過好幾次了,但是我無法在任何腳本中使用它。對於(j = 0; j

相關問題