1

私はプログラミングの初心者です。 私のGSプロジェクトのコードスニペットはとてもうまくいきます。上記のコードを実行している私のスプレッドシートファイル内Google App Script - スプレッドシートファイルの値を1つの配列でフォーマットされた文字列から設定する方法

var nextRow = Sheet_current.getLastRow() + 1; // Line 1 
var str = "1,2,3,4,5,6"; 
var temp = new Array(); //Line 3 
temp = str.split(","); 
var target = new Array(); //Line 5 
for (var i = 0; i < temp.length; i++) { 
    target.push([temp[i]]); 
} 
Sheet_current.getRange(Sheet_current.getLastRow() + 1, 1, target.length, target[0].length).setValues(target); //Line 9 

結果: result

私はその後、一時的な配列(3行目)に変換し、入力として文字列を使用します。

私は、ターゲット配列に一時配列の値を渡すために、引き続きターゲット配列を宣言します。最後に、ターゲット配列を使用してスプレッドシートに値をダンプします(垂直方向、ターゲット配列の各単語はスプレッドシートファイルの行に対応します)(9行目)。

コードを最適化する方法を教えてもらえますか?

よろしくお願いいたします。

答えて

0

異なる行の結果を最初の列から開始したい場合は、appendRow() methodを使用できます。ここではあなたのケースでの使用の例である:

function myFunction() { 
    var Sheet_current = SpreadsheetApp.getActiveSheet(); 
    var nextRow = Sheet_current.getLastRow() + 1; // Line 1 
    var str = "1,2,3,4,5,6"; 
    var target = new Array(); //Line 3 
    target = str.split(","); 
    for (var i = 0; i < target.length; i++) { 
    Sheet_current.appendRow([target[i]]); 
    } 
} 

それとも、同じようにあなたの構造を維持するために、あなたの最初の配列にしたいの変更をしたことができます。

function myFunction2(){ 
    var Sheet_current = SpreadsheetApp.getActiveSheet(); 
    var nextRow = Sheet_current.getLastRow() + 1; 
    var str = "1,2,3,4,5,6"; 
    var temp = new Array(); 
    temp = str.split(","); 
    for (var i = 0; i < temp.length; i++) { 
    temp[i] = [temp[i]]; // To convert your Array[] on Array[][] 
    } 
    Sheet_current.getRange(Sheet_current.getLastRow() + 1, 1, temp.length, temp[0].length).setValues(temp); 
} 

しかし、私はこのことをお勧めしません。メソッドは大丈夫ですが、小さなプログラムでは大丈夫ですが、大きなプログラムでは扱いにくい可能性があります。

+0

フィードバックに感謝いたします - Pierre-Marie Richard。 GSプロジェクトでコードを置き換えました。 私の元の配列を使っているだけで問題は解決しましたが、ログを再チェックして実行すると、の方法の間に、が発生しました。 0.7〜0.9秒。 のコードを実行しました。あなたに書き返している間に、あなたより多くを得ました。今度は、2番目のコードスニペットを実行します。 もう一度、私は本当にあなたに感謝しています。ありがとう。 –

+0

appendRow()メソッドはもっと長くはなりますが、アトミックであるという利点があります。 –

+0

私のプロジェクトで2番目のコードがうまく動作します。私の問題は完全に解決されました。たぶん私は元のコードまたは2番目のコードスニペットを使用することを検討します。なぜなら、これらの2つのスクリプトは1000要素を含む文字列を入力しようとするとほとんど同じ実行時間を持つからです。再び、私はあなたにとても感謝しています、ありがとう。 –

関連する問題