2016-04-27 11 views
-1

私はプログラミングが初めてで、このような簡単な質問がありますが、私は答えを見つけるのに苦労します。私は動的に配列の長さにA1からの細胞を上書きしたいと思います。これは私が苦労しているループの2番目です。範囲の "A" + "ii"の組み合わせは "プロ"とは見えません:-) ありがとうございました。Googleシート/ Javascript - >ループスルー配列を使用してセルに値を設定する

function selectmyagency() { 
    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var agencynames = ss.getRange("B8:B42").getValues(); 
    var myagency = ss.getRange("C3").getValue(); 

    var arrayLength = agencynames.length; 

    for (var i = 0; i < arrayLength; i++) { 
    if(agencynames[i] == myagency){ 
     //doNothing 
    } else { 
     agencynames[i] = "."; 
    }//endif 
    }//endfor 

    //overwrite Cell in Spreadsheet 
    for (var ii = 0; ii < agencynames.length; ii++) { 
    SpreadsheetApp.getActiveSheet().getRange("A"+ii).setValue(agencynames[ii]); 
    //SpreadsheetApp.getActiveSheet().getRange("A9").setValue(agencynames[ii]); 
    //SpreadsheetApp.getActiveSheet().getRange("A10").setValue(agencynames[ii]); 
    } 
}//endfunction 
+0

の代わりにagencynames[i][0]を使用することをお勧めします。これは動作していないか、正しく表示されないという問題ですか? 'agencyNames'の範囲全体を空白にしたいだけなら、より効率的な答えを提供できます。 –

+0

トピックに質問をするには、私たちに何が働いていないかを見せてください。 –

答えて

0

代わりの配列をループして範囲を設定することは、一度に1つのセルに価値を、次のようなので、バッチ操作で行うことができます。ss.getRange("B8:B42").setValues(agencynames);

は、agencynames配列を変更した後、この意志をこれを行ってください配列と範囲が同じサイズである限り、その範囲のすべての値を配列に一致するように設定します。パフォーマンスや可読性のために、バッチ処理を使用できるときには、ループ内のサービスを呼び出すことは一般的にはお勧めできません。詳細については

Apps Script Best Practices

編集を参照してください:あなたの修正コード:

function selectmyagency() { 
    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var agencynames = ss.getRange("B8:B42").getValues(); 
    var myagency = ss.getRange("C3").getValue(); 

    var arrayLength = agencynames.length; 

    for (var i = 0; i < arrayLength; i++) { 
    if(agencynames[i] == myagency){ 
     //doNothing 
    } else { 
     agencynames[i] = "."; 
    }//endif 
    }//endfor 

    //overwrite Cell in Spreadsheet 
    ss.getRange("B8:B42").setValues(agencynames); 
}//endfunction 

カップルより多くのポインタ:

  • 配列の長さ変数を設定する必要はありません配列ではなく要素自体を変更している場合のみです。
  • getValues()を使用すると、配列の配列がではなく、であり、配列が単一の列であっても値の配列が得られます。すなわち、 ["value","value","value"]の代わりに[["value"],["value"],["value"]]この配列の値を設定または取得するときは、agencynames[i]
関連する問題