GASのwhile文の使い方解説!条件式がtrueの間くり返し処理し、無限ループに注意

2022年4月26日

Google Apps Script(GAS)の繰り返し処理を実装するのに使われるwhile文があります。

while文による繰り返し処理のスクリプト記述方法と無限ループなどの注意点を解説します。

プログラミングは繰り返し処理が基本

プログラミングは大きく3つの特徴があると言われています。

  1. 逐次処理
  2. 条件分岐
  3. 繰り返し

その中でも、人間よりもプログラムが優れているのが繰り返し処理です。

人間が操作すると途方もない時間がかかる処理を、繰り返し実行することで短時間で実行することができます。

そうした点で条件分岐に加え、繰り返し処理がGoogle Apps Script(GAS)のコードでも基本となります。

GASの繰り返し処理の1つにwhileループ

Google Apps Script(GAS)にも他のプログラミング言語と同様に繰り返し処理のためのループ文が用意されています。

そうしたGASで利用できるループの1つがwhile文です。

while文は繰り返し処理の基本のループで、プログラミング入門書などにも必ず記述されています。

ループ処理で最も利用頻度が多いfor文とともにwhile文は覚えておくべきループです。

while文の文法と記述方法

Google Apps Script(GAS)のスクリプトにおけるwhileループの書き方を解説します。

while文は以下の形で繰り返し条件と繰り返し処理を記述します。

while(条件式){
  //条件式がtrueの場合、処理を実行

  }
//条件式がfalseになった時、whileループ終了
  1. whileの()括弧内に記述した条件式が満たしている(true)か、満たしていない(false)か判定
  2. 条件式がtrueになる場合、中括弧{}内に記述された処理を実行し、1に戻る
  3. 条件式がfalseだった場合、中括弧内の処理はスキップされ、while文が終了

whileループの処理をフローチャート図で表すと以下の図のようになります。

while文の条件式の判定が初回でもfalseだった場合はwhile内の処理は1回も実行されません。

whileという英単語は接続詞として「~の間、」という意味があり、それがベースとなって、条件を満たしている間、処理が繰り返されるループになっています。

whileループは「条件式がtrueの間、処理がくり返しになる」と覚えておきましょう。

while文を使ったGASサンプルコード

実際にwhile文を使ったGoogle Apps Script(GAS)の繰り返し処理のサンプルコードを紹介します。

function myFunction() {
  //whileループの条件式で使う変数を定義
  let num = 0;
  //numが100未満の時はループ処理を実行
  while(num < 100){
    //numの値をログ出力
    console.log(num);
    //numをインクリメント
    //num++;
  }
}

最初に数値型の変数に0をセットし、while文で100未満の間はループ処理を繰り返すGASサンプルコードです。

whileループ内のくり返し処理の最後に変数をインクリメントしており、インクリメントを繰り返して100になるとwhileループを抜け出します。

実際に、whileループのGASサンプルコードを実行すると、実行ログに0から99までの数値が出力されます。

インクリメントの結果、100になるとwhile文の条件式を満たさずfalseになるので、ループ処理が終了します。

whileループを途中で抜けるにはbreak

while文の処理の途中でループから抜けるにはどうすればよいでしょうか。

Google Apps Script(GAS)ではbreakコマンドで抜けることができます。

whileループは基本的に条件式がtrueの時に処理を繰り返して、falseになると繰り返し処理を終了します。

基本的にwhileループの途中で抜けるGASスクリプトは珍しいですが、条件式とは異なる例外が存在する場合は、if文などでbreakを実行して、繰り返し処理を中断可能です。

whileは無限ループに注意

while文を使った繰り返し処理で最も気をつけたいのが「無限ループ」です。

Google Apps Script(GAS)のwhile文での無限ループは条件式がfalseにならず、処理が無限に繰り返されることを言います。

GASは実行時間が6分という上限が設けられているため、6分経過するか、スクリプト実行を中断しないと止まりません。

GASに慣れてくると無限ループにおちいることは少なくなりますが、最初のうちは条件式の更新ができておらず、無限ループが発生することがあります。

事前にGASスクリプトをテスト実行したり、コードレビューで条件式がfalseになるかチェックすることが大切です。

まとめ・終わりに

今回、Google Apps Script(GAS)の繰り返し処理の1つであるwhileループを紹介しました。

whileループはGASの入門書などでも必ず習う、forループとともに覚えておくべき繰り返し処理です。

while文の最初に記述した条件式がtrueまたはfalseか判定し、trueなら中括弧{}内の処理を実行し、再度条件式の判定を行い、falseになったところでループが終了します。

whileループはGASスクリプトの不備によっては条件式がいつまでもfalseのままでtrueにならずに無限ループに陥る恐れがあるので注意が必要です。

whileループを使えば、たくさんあるデータをくり返し実行して処理できるので、GASを使いこなすためにもマスターしましょう。

while文も含めたGASで使える繰り返しループについて以下のの記事でまとめています。