2016-07-09 4 views
0

文字列のあるセルが含まれている行を削除するgoogleスクリプトを作成しようとしています。ここで文字列が見つかった行全体を削除する

は、私が今使っているコードです:

function myFunction() { 
    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var s = ss.getSheetByName('Test'); 
    var values = s.getDataRange().getValues(); 
    for(var i=values.length;i>0;i-=1){ 
    var lcVal=values[i-1][0].toLowerCase() 
    var index = lcVal.indexOf("deleteme"); 
    if (lcVal.indexOf("deleteme") > -1){ 
    s.deleteRow(i)}; 
    }} 

理想的には、これが通過し、「deleteme」を含むセルを持つ行を削除します。また、これがチェックするセルの範囲(つまり、行9から始まるA列全体)を指定したいと思いますが、その部分をまだ理解していません。

これを実行しようとすると何も起こりません。セルは削除されません。

+0

他の人がテストできるようにスクリプトを作成して公開します。どのようなエラーメッセージが表示されますか?スクリプトのLogger出力を確認します。 –

答えて

0

まず、GASはJavaScriptをベースにしています。したがって、JavaScriptを使って何が間違っているかを判断するだけであれば、そのタグを追加することができます。あなたは既にこの質問に答えているでしょう...それとも、重複した質問として既にマークされているでしょうか?あなたがそれを行うならば、あなたがJavaScriptの部分について質問していることを指摘してください、そうでなければJSのスニペットをJSに入れてください。

秒。 Logger.log()はあなたの友人です。すべてが-1として返されているので、何も起こっていません。あなたがこれらのようないくつかの行に入れて、実行後にログを表示する場合、何が起こっているか見ることができます。 (私は私がスクリプトが終了呼び出す前にそれらを引っ張ったり、コメントすることを忘れないように左詰めにしておきます。)これは、このログになり

function myFunction() { 
    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var s = ss.getSheetByName('Sheet11'); 
    var values = s.getDataRange().getValues(); 
Logger.log(values); 
    for(var i=values.length;i>0;i-=1){ 

    var lcVal=values[i-1][0].toLowerCase() 
    var index = lcVal.indexOf("Science"); 
Logger.log("lcVal and index are: " + lcVal + " ... " + index + " and values.indexofscience is: " + values.indexOf("science")); 
     if (lcVal.indexOf("Science") > -1){ 
     s.deleteRow(i)}; 
    }} 

[16-07-09 10:56:15:285 EDT] [[science], [math], [science], [english], [ELA], [History], [Elective], [Science]] 
[16-07-09 10:56:15:286 EDT] lcVal and index are: science ... -1 and values.indexofscience is: -1 
[16-07-09 10:56:15:286 EDT] lcVal and index are: elective ... -1 and values.indexofscience is: -1 
[16-07-09 10:56:15:286 EDT] lcVal and index are: history ... -1 and values.indexofscience is: -1 
[16-07-09 10:56:15:287 EDT] lcVal and index are: ela ... -1 and values.indexofscience is: -1 
[16-07-09 10:56:15:287 EDT] lcVal and index are: english ... -1 and values.indexofscience is: -1 
[16-07-09 10:56:15:288 EDT] lcVal and index are: science ... -1 and values.indexofscience is: -1 
[16-07-09 10:56:15:288 EDT] lcVal and index are: math ... -1 and values.indexofscience is: -1 
[16-07-09 10:56:15:289 EDT] lcVal and index are: science ... -1 and values.indexofscience is: -1 

だから、科学と科学の言葉で私のテストシートはインデックスの位置を返していません。その時点で、indexOf()を掘り下げたり、別のことをする必要があります。

第3位...第1位または第0位だったはずです...あなたがユニークなことをしているのか、それとも前に行われている可能性があるものかを尋ねます。文字列を見つけて行を削除するのはかなり一般的なことです。 SEや他のサイトには多数の回答があります。 hereは、あなたにアプローチし、アプローチに関する良い議論をしてくれるはずです。私はそれを再ハッシュしません。

関連する問題