今回の記事では、プログラミングで繰り返し処理をする時に使うfor文について解説していきます。
GASのfor文の基本的な書き方
for文はfor(初期化式; 条件式; 増減式) { 処理 }の形式で書きます。
初期化式とかなんのことだとなりますが、次のようなイメージです。
- 初期化式:繰り返しを始めるスタートの数を決める
- 条件式:繰り返しを終えるタイミングを決める
- 増減式:初期化式で決めた変数をどれだけ増減させるかを決める
5回処理を繰り返すサンプルコードが下記の通りです。
1 2 3 4 5 6 7 8 9 10 | function myFunction(){ for(var i=0; i<5; i++){ Logger.log("apple") } } log > apple log > apple log > apple log > apple log > apple |
(var i=0; i<5; i++)が何を表しているかというと、変数 iをゼロから初めて、処理が終わるたびに1ずつ追加しながら、iが5より少ない時に処理を実行するということを表しています
for文を条件によって途中で処理終了させる方法(break)
for文を途中で終わらせたいときには、breakを使ってあげます。
3回目の処理が終わったらfor文を終わらせるサンプルコードです。
1 2 3 4 5 6 7 8 | function myFunction() { for(var i=0; i<5; i++){ Logger.log("apple") if(i == 2){ break } } } |
breakだと、for文の続きの回数があったとしても、そこで処理を終了させることができます。
条件分岐はif文を使ってあげればよいです。
for文の処理をスキップさせるやり方(continue)
for文の処理で次の繰り返しに入ってほしいときにはcontinueを使ってあげます。
繰り返しが4回目の時に処理をスキップさせるサンプルコードです。
1 2 3 4 5 6 7 8 9 10 11 12 | function myFunction() { for(var i=0; i<5; i++){ if(i == 3){ continue } Logger.log(i) } } log > 0 log > 1 log > 2 log > 4 |
continueを呼び出した場合にはfor文内で書いてあるcontinue以降の処理を行うことなく、次の繰り返し処理へと進みます。
配列の繰り返し処理
GASを使うとセルの値を取得して繰り返し処理を行うということがよくあるかと思います。
その時には配列でのデータ取得が多いので、そのやり方を解説します。
基本的な書き方は変わりませんが、少し注意が必要です。
1 2 3 4 5 6 7 8 9 | function myFunction(){ const array = ["apple", "orange", "peach"] for(var i=0; i<array.length; i++){ Logger.log(array[i]) } } log > apple log > orange log > peach |
配列の要素に対してやる場合には、初期化式は0から始めるのが良いです。
配列の要素は最初が1から始まるのではなく、0から始まるためです。
また、条件式のところも配列の全てに対してやる場合にはlengthを使って配列の要素数を呼び出してあげます。
for in形式での繰り返し
配列の場合にはfor inという形式で繰り返し処理を行うこともできます。
配列に対してすべての処理を行たい時にはシンプルに書くことができます。
1 2 3 4 5 6 7 8 9 | function myFunction(){ const array = ["apple", "orange", "peach"] for(var i in array){ Logger.log(array[i]) } } log > apple log > orange log > peach |
ここでのfor inではiのところに配列のindexが返ってきます。
なので、配列内の要素をとる時にはarray[i]と書いてあげる必要があります。
複数のfor文を入れ子にして繰り返し処理をする(多重ループ)
二次元配列などを扱う際にはfor文を入れ子にして使う場合があります。
その時のやり方について解説します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | function myFunction() { const array = [["apple", "リンゴ"],["orange", "オレンジ"],["peach", "ピーチ"]] for(var i=0; i<array.length; i++){ for(var j=0; j<array[i].length; j++){ Logger.log(array[i][j]) } } } log > apple log > リンゴ log > orange log > オレンジ log > peach log > ピーチ |
この時に注意するのは配列を呼び出すときの変数がダブっていないかどうかが重要です。
よくあるのはfor文内で使う変数を間違えることによって処理がおかしくなってしまうので注意が必要です。
辞書オブジェクトのforループ
辞書型のオブジェクトをforループで回すと、キーを取得することができます。
書き方としては、for in形式です。
1 2 3 4 5 6 7 8 9 | function myFunction() { var dict = {'key1': "イチゴ", "key2": "リンゴ", "key3": "ミカン"} for(let key in dict){ Logger.log("key:" + key + " value:" + dict[key]) } } > key: key1 value:イチゴ > key: key2 value:リンゴ > key: key3 value:ミカン |
コメント