2016-05-10 8 views
0

私はコーディングにまったく新しいものです。私は、この単純なコードがGoogleスクリプトではうまくいかない理由を理解しています。私を終わらせるTiny For Loop

var student = new Object; // name & student's hours 
var studentNames = new Array; 

for (var i=0; i <= allSheets[1].getLastRow(); i++); { 
    studentNames[i] = allSheets[1].getRange((i+3),1).getValue(); 
    student[studentNames[i]] = allSheets[1].getRange(i+3, 3).getValue(); 
} 

いくつかの奇妙な理由で、studentNamesの配列にnullが含まれているだけで、Objectの生徒には1つのキーしか表示されません。

私はそうのようなforループをバイパスする場合は、

studentNames[0] = allSheets[1].getRange(3,1).getValue(); 
studentNames[1] = allSheets[1].getRange(4,1).getValue(); 
studentNames[2] = allSheets[1].getRange(5,1).getValue(); 
studentNames[3] = allSheets[1].getRange(6,1).getValue(); 

すべてが完璧に動作します!

もし私が何をやっているのか誰かが教えてくれたら、私はずっと義務づけられています。

+0

この[URL](http://stackoverflow.com/help)をチェックすると、コンテンツの品質を向上させるのに便利です –

+0

allSheets [1] .getLastRow()が実際に返すものを確認しましたか? – doc

+0

@docええ、それは23を返します。 – Justin

答えて

2

あなたforループ

for (var i=0; i <= allSheets[1].getLastRow(); i++); <の末尾にセミコロンを削除する - この1

歓声:)

+0

うわー。あなたは最高です!私は4時間後にそれを見ていないとは信じられません... – Justin

+0

あなたは2分で私を打ち負かしました。 – HardScale

0

を4行目に余分なセミコロンがあります:

for (var i=0; i <= allSheets[1].getLastRow(); i++); { 

は、

for (var i=0; i <= allSheets[1].getLastRow(); i++) { 

セミコロンはforループの本体を閉じてしまうので、ブロック{...}は一度だけ実行されます。