GASのfor文の繰り返しループ処理とbreak、continueの使い分けを解説
Google Apps Script(GAS)で最もよく使う繰り返し処理がfor文です。
スプレッドシートから取得したデータを繰り返し処理に用いられるforループを解説します。
あらゆるプログラミング言語でfor文は利用
プログラミングは逐次処理、条件分岐と繰り返し処理の3つの要素で構成されています。
繰り返し処理の1つで最もよく利用されるループ処理がfor文です。
for文は主要なプログラミング言語に必ず実装されています。
繰り返し処理には他にもwhile文がありますが、その使い勝手から、for文のほうが利用頻度が高いです。
GASでもfor文の利用シート多数
Google Apps Script(GAS)でも、for文による繰り返し処理はもちろん利用することができます。
GASではスプレッドシートのデータを読み込んで処理する機会が多いです。
シート内の複数範囲のセルの値を取得し、処理する際にfor文がよく用いられます。
whileループでも処理は可能ですが、配列データの処理ではforループを利用するパターンが多いです。
GASにおけるfor文の文法
Google Apps Script(GAS)のスクリプトにおけるforループの書き方を解説します。
for文は以下のようにで変数の初期化と繰り返し条件、増減式を記述します。
for(初期化式; 条件式; 増減式){
//条件式がtrueの間、実行する処理を記述
}
for文の中括弧内に繰り返し実行する処理を記述する形となっています。
for文による繰り返しループの処理の流れは以下の通りです。
- for()括弧内で変数の初期化式、条件式、増減式を定義
- 条件式がtrueだった場合、forループ内の処理を実行、falseだとforループ終了
- 1で定義した増減式を実行後、再度条件判定の2に戻る
forループの処理をフローチャート図で表すと下の図のようになります。
まず、最初に変数初期化、条件式、増減式を定義した上で、定義した条件式に照らし判定を行います。
条件式がtrueだった場合はfor文の中括弧内の処理を実行し、その後に増減式を実行、再び条件式による判定を行います。
この繰り返しをしている間に条件式がfalseになると、forループの処理が終了となります。
for文によるループ処理のGASサンプルコード
実際にfor文を使ったGoogle Apps Script(GAS)の繰り返し処理のサンプルコードを紹介します。
function myFunction() {
//変数の初期化、条件式、増減式を設定
for(let i=0;i<10;i++){
//変数の数値をログ出力
console.log(i);
}
}
GASのサンプルコードでは、まず、for文の括弧内で変数の初期化、条件式、増減式を定義します。
増減式では多くの場合、数字が1つずつカウントアップされるインクリメントを使うのがほとんどです。
for文の中括弧内にある処理を実行すると、増減式が実行されて、条件式との条件判定でtrueの場合は、ループが繰り返されます。
今回のGASサンプルコードの実行結果では、10回のforループが繰り返されて、0から9の数字が実行ログに出力されます。
forループの処理から離脱したい場合はbreak
forループは、ループ開始時に設定した条件式がfalseになるまで繰り返し実行されます。
ただ、Google Apps Script(GAS)の処理内容によっては、想定された回数の繰り返し処理を実施する前にforループを終了したい場合もあります。
例えば、それぞれユニークな値が入っている配列変数の中から合致するものを探すfor文で、ユニークな値を発見した場合、それ以降に探す処理は不要です。
そうした場合にはfor文の繰り返し処理の中にbreakコマンドを使います。
forループの中でif文などを使い、離脱条件を設けたところにbreakを記述します。
function myFunction() {
//変数の初期化、条件式、増減式を設定
for(let i=0;i<10;i++){
//変数iが5の時forループを離脱
if(i===5) break;
//変数の数値をログ出力
console.log(i);
}
}
サンプルコードのforループの処理の中で、if文による条件分岐で変数が5になったときにbreakを実行しています。
その結果、本来のforループは10回実行されるところ、途中でループ処理を終了させることができます。
1つのbreakで抜けるのは1つのforループ
なお、1回のbreakコマンドで離脱できるのは、breakが実行されたループのfor文のみです。
例えば、for文の中にfor文が書かれた、いわゆるネストされたforループでbreakを実行しても、両方のforループからは抜けません。
breakコマンドが実行されたforループのみが終了となります。
もしネストされたforループで両方から抜け出したい場合は、flagを使ってそれぞれforループでbreakを実行する必要があります。
forループ処理を1回スキップはcontinue
また、forループでは特定条件の時だけループ処理をスキップしたい場合もあります。
例えばサンプルコードではfor文で10回繰り返し処理をしていますが、5の時だけスキップしたいケースです。
このようなforループでスキップするにはcontinueコマンドを使用します。
さきほどbreakコマンドと同じようにforループの処理の中で、if文でcontinueを記述します。
function myFunction() {
//変数の初期化、条件式、増減式を設定
for(let i=0;i<10;i++){
//変数iが5の時forループをスキップ
if(i===5) continue;
//変数の数値をログ出力
console.log(i);
}
}
前述したbreakはforループが途中で終了しましたが、continueはそのループ処理だけがスキップされています。
continueでスキップしたあと、forループ処理は通常通り実行されています。
このようにforループから離脱したい場合はbreak、処理を1回スキップしたい場合はcontinueと使い分けましょう。
まとめ・終わりに
今回、Google Apps Script(GAS)の繰り返し処理の1つであるforループを紹介しました。
forループは主要なプログラミング言語では必ず利用する利用頻度の高い繰り返し処理です。
GASではスプレッドシートにあるデータを処理することが多く、for文は必ずと言って使うことになります。
for文は繰り返しの回数が決まっていることもあり、while文よりも使いやすいです。
ループの途中で終了するbreakや、ループを1回スキップするcontinueなどを使えば、柔軟なループ処理がGASで実装できます。
たくさんのデータをGASスクリプトで繰り返し処理したい場合に、for文を活用しましょう。
for文も含めたGASで使える繰り返しループについて以下のの記事でまとめています。
ディスカッション
コメント一覧
まだ、コメントがありません