GASのdo while文の使い方!whileとの違いである後置判定ループ処理を解説

2022年4月28日

Google Apps Script(GAS)における繰り返し処理のひとつにdo while文があります。

do while文はwhileループと似た処理の流れですが、条件判定ポイントが異なっており、利用シーンが微妙に異なります。

そこでwhileループとの違いを含め、do whileループの使い方などを解説します。

GASでよく使う繰り返し処理「while文」

前回の記事ではGoogle Apps Script(GAS)のスクリプトでよく使う繰り返し処理として、while文を紹介しました。

GASではfor文に次いでよく使われるループ処理です。

条件式を満たしている間、while文の中括弧内に書かれた処理を繰り返し実行します。

while文と似たループ処理「do while文」

そんなwhile文と似たループ処理として「do while文」がGoogle Apps Script(GAS)で利用可能です。

do while文もC言語やJavaなど主要なプログラミング言語では必ず実装されています。

while文に比べて利用頻度は少ないですが、do while文のほうが適している繰り返し処理もあります。

そのため、do whileループも理解すると、処理フローに応じてwhileループと使い分けができるようになります。

do whileループの記述方法

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

do{
  //処理を実行

  }while(条件式);
//条件式がtrueなら繰り返し処理実行、falseならdo whileループ終了

do while文は以下の形で繰り返し処理→条件判定の流れで記述します。

  1. doの中括弧{}内に記述された処理を実行する
  2. doループ終了時に設置されたwhileの条件式がtrueになる場合、1に戻る
  3. whileの条件式がfalseだった場合、do while文が終了
Google Apps Script(GAS)でwhile文に似た繰り返し処理「do whileループ」のフローチャート図

do whileループではまず条件判定よりも先にdoループの中括弧内の処理が実行されます。

doループ処理が終わった後、while括弧内の条件式による条件判定を行い、条件を満たす(true)場合は処理を繰り返し、満たさなくなった(false)場合は処理を終了します。

do while文のGASサンプルコード

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

Google Apps Script(GAS)でdo whileループの繰り返し処理を実行するサンプルコード
function myFunction() {
  //do whileループの条件式で使う変数を定義
  let num = 0;
  //numが100未満の時はループ処理を実行
  do{
    //numの値をログ出力
    console.log(num);
    //numをインクリメント
    num++;
  }while(num<100);
}

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

doの後に中括弧からループ処理が開始され、console.logで変数の数字を出力します。

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

Google Apps Script(GAS)でdo whileループの繰り返し処理を実行するサンプルコードの実行した結果

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

while文とdo while文の違いは?

Google Apps Script(GAS)も含め、プログラミングを学ぶ初学者にとって、while文とdo while文の違いは何か?という疑問をいだきます。

whileループとdo whileループの違いは一言で表すと、「繰り返し処理と条件判定の順番が逆」です。

while文とdo while文のフローチャートを並べてみます。

Google Apps Script(GAS)でよく使う繰り返し処理「whileループ」のフローチャート図
Google Apps Script(GAS)でwhile文に似た繰り返し処理「do whileループ」のフローチャート図

while文は「条件判定→繰り返し処理」なのに対し、do while文は「繰り返し処理→条件判定」です。

while文は最初に条件判定が行われるため、初回であっても条件式がfalseなら繰り返し処理が実行されません。

一方、do while文は処理が先に行われた後に、条件判定が行われるため、必ず1回は繰り返し処理が実行されます。

この処理と条件判定の順番の逆なのがwhile文とdo while文の大きな違いのポイントです。

do while文は後置判定

前述でwhile文とdo while文のフローチャート図を比較した通り、while文はループ処理が開始されるタイミングで条件判定を行うため、「前置判定」と呼ばれます。

それに対し、do while文はループ処理の最後で条件判定を行う「後置判定」です。

前置判定と後置判定という条件判定が行われるのが処理の前か、処理の後かによってwhile文とdo while文に違いが生じています。

ループ処理を少なくとも1回実行したい場合はdo while文、条件を満たさない場合は実行しなくてもよい場合はwhile文という使い分けです。

まとめ・終わりに

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

for文やwhile文に比べると、do while文をGASで利用する頻度は少ないです。

do while文はまず繰り返し処理が実行され、その後whileの条件式による条件判定を行い、trueなら再度繰り返し処理、falseならループを終了します。

前置判定のwhileループとは条件判定と処理の順番が異なる「後置判定」なのがdo whileループです。

少なくとも1回はループを実行したい場合にはwhileループよりもdo whileループのほうが適しているケースもあるので、うまく使い分けましょう。

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