2017-07-07 10 views
0

特定のテキスト値を含むGoogleスプレッドシートの行を削除できるスクリプトを作成しようとしています。私は非常に初心者のコーダーであり、私が見つけたいくつかの同様のスクリプトを修正しようとしました。私が働くことができる唯一のものは次のとおりです。しかし、私の価値観は長く、潜在的に何百もの言葉になります。私がここに持っているスクリプトは、この多くの価値のために構築するのが面倒です。私は配列または2番目のスプレッドシートの値を持つ方がはるかに良いだろうと推測しています。大文字と小文字が区別されます。私は、すべての小文字に変更するために他のスクリプトからコードを持ち上げようとしましたが、動作するものは何も得られません。配列または2番目のスプレッドシートの値を含む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つを検出すると、何か-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

感謝を!これは、用語を編成するのに役立ち、私のリストを構築するのがずっと簡単になります。私はまだリストに小文字だけを入力する方法を探していますが、下のスクリプトの行で起こっていると思われるように、大文字と小文字の違いをすべて削除するようにスクリプトを設定してください。私は何度も試してみましたが、私のスクリプトではうまく動作しません。 for(j = 0; j

関連する問題