2016-03-18 5 views
0

Googleスプレッドシートでスクリプトを実行しようとしています。以下はコードスニペットです:2.0はGoogle Appsスクリプトで20と認識されます

var startRow = 2; 
var data = dataRange.getValues(); 
for (i in data) { 
    sheet.getRange(startRow + i, 4).setValue("EMAIL_SENT"); 
} 

2番目の行に「EMAIL_SENT」と表示されます。しかし、代わりに、それは20行目から現れます。 Loggerを使用してstartRowを書き出すと、2ではなく2.0と表示されます。私はFinlandに住んでいるので、2.0と認識されていると思います。ドットではなくカンマが基数として使用されます。言いましたが、私の言語設定はドットを基点に使う日本語で設定されています。したがって、この解釈は論理的ではありませんが、これが私が考えることができる唯一の説明です。私が使用したとき

Math.round(startRow) 

これは役に立ちませんでした。誰も解決策を提案できますか?ありがとうございました!

+0

に​​を追加することができます。私はdata.lengthを<; I + = 1 ) ' –

+0

実際にあなたが持っている問題はあなたの考えではありません。 2.0は、ロガー内の整数の正規表現です。実際の問題は、スクリプトで整数を認識せず、文字列であると仮定しているため、2 + 0の加算ではなく2の代わりに2を加えたことです。 Sandyのソリューションは、この種の問題を避けるための良い方法です。 –

+0

他の人が質問に答えましたが、ベストプラクティスのコメントを追加するだけです。個々のget range ... setvalueを持つシートに値を追加しないでください。メモリ内の全範囲を表す単一の配列を操作して、シートに1回書き込むほうがよい。 – Jonathon

答えて

0

理由はわかりませんが、何らかの理由でループのタイプが番号付きインデックス(i)を作成していません。だから、あなたのスクリプトはstartRow + i 2とi、2プラスiではないと言っているようなものです。あなたは、あなたがこれを変更するには、インデックス0

で番号2を見ている番号20を見ていない

、あなたはどちらかのループのこのタイプを使用することができます。

for(var i=0;i<data.length;i++){ 
    sheet.getRange(startRow + i, 4).setValue("EMAIL_SENT"); 
    } 

それとも、ただその代わり、 `` VAR I = 0(のために `てみてください(Iデータで)のためのi

sheet.getRange(startRow + Number(i), 4).setValue("EMAIL_SENT"); 
+0

他のコメントが投稿されたとき、私の答えを書いていました。私はちょうど彼らが言ったことを正確に言った。 – Mullenb

関連する問題