while文を使った繰り返し処理
Googleスプレッドシートの操作を中心にGAS(GoogleAppsScript)の基本コードを紹介しています。初心者の方が順番に読んでくだけでGASの基礎コードが理解出来るようになればなと思って、短めの記事で進めて行きたいと思います!
今回は、”while文を使った繰り返し処理”について紹介します!
繰り返し処理
スプレッドシートのデータを扱っていると、ある場所からある場所まで同じ処理を繰り返し行う必要がある場合があると思います。
そのような場合、プログラミングを行うことで、大量の同じ処理を自動的に繰り返して行うことが出来るようになります。※ループ処理と言います。
A1セルからA10000セルまで同じ処理を繰り返すなど、人間が人力でやったらものすごい時間がかかる作業などを一瞬で行えるように、プログラミング言語には”繰り返し処理”の構文があります。
“while文”は、いくつかある”繰り返し処理”の構文の一つになります。
while文
while(条件式){
// 条件式がtrueの間ずっと実行される処理
}
処理の流れを図で表すと、次のようになります。
while文の処理がスタートされると、条件式での条件判定が行われます。条件式が”false”だと処理は終了。条件式が”true”の間は、処理が繰り返し行われるという流れですね。
次の処理で具体的に考えてみましょう。
【処理】
変数xを設定する(初期値は0)
変数xが100以下の場合は継続
処理するごとにxを1増加させる
ループを抜けた後の変数xをログに表示
コードにすると次のようになります。
function test(){
// 変数xを設定
var x = 0
// while文
while(x <= 100){ //xが100以下
// xを1増加
x++
}
Logger.log(x)
}
xが「101」になった時点で、while文(ループ)から抜ける予定なので、ログの出力は「101」になるはずですね。
やってみます。
ログに「101.0」が表示されました^_^
無限ループ
while文など、ループ処理を行うときは「無限ループ」に注意する必要があります。
例えばこんなコードです。
function test(){
var x = 0
//while文
while(x < 100){ //xが100より小さい
x *= 2 // xに2を掛ける
}
Browser.msgBox("終了")
}
何が問題でしょうか?
このコードの場合、変数xの初期値に「0」を設定しているので、処理で「x *= 2」を何度行っても結果は「0」です。
つまり、永遠に「x<100」の状態が続いてしまうので、無限ループになってしまいます。
無限ループに陥ってしまった場合は、スクリプトエディタの上部に表示されている「Running function (関数名)…」に続く、「キャンセル」をクリックしてください。プログラムを終了させることができます。
実行動画
繰り返し処理のプログラムは思わぬ挙動を引き起こすことが多々ありますので、条件式はしっかりとチェックをしてプログラムを動かしましょう!!
まとめ
while文による繰り返し処理(ループ処理)を説明しました。いかがでしたでしょうか?次回も別の繰り返し処理を紹介します!
コメント