GoogleSpreadSeetを書くときによく使われている繰り返し処理を紹介する。

Rainy Meiji Dori

こんにちは、書川(カキカワ)です。

これから紹介する繰り返し処理のfor文と、別の記事で紹介している条件式を組み合わせると、自動化のシステムを作れるようになる。

以下の記事で、自動でSlackに通知するシステムを作成する方法を紹介しているから参考にどうぞ。

つまづいた時には、条件分岐と繰り返し処理でどうにか出来る。

基本的なプログラミングでは、難しくて複雑な考え方なんて、本当は必要はなく、条件分岐と繰り返し処理で答えを導き出せると気づいた。

スクリプトを自分の手で実行するのではなく、必要な分だけ繰り返し実行をさせるfor文だけ押さえておけば、自動化を書く際に困らない。

繰り返し処理で使うfor文(ループ)の基本

for文は、繰り返しの処理を行うときに使う。

設定する条件に達するまで繰り返すので、膨大な量のデータがあっても全て処理を終えるまで止めない条件を与えれば1万個以上のデータがあろうが繰り返しの処理は止まりまらない。

裏を返せば、与える条件を間違えれば無限ループになりかねない。

for文の書き方

for(初期化式;条件式;増減式){
//繰り返す処理
}

どこから(初期化式)、どこまで(条件式)、どれだけセルを進むか(増減式)

◆初期化式

◆条件式

◆増減式

上記の3つの式でどのように処理を繰り返すかを設定できる。

初期化式

for文の初期化式では、カウンタ変数を定義する。慣例として「i」、「j」、「k」が使われている。

ループは基本的に上から下に処理していくことが多い。

シートの1行目はほとんどが、カテゴリ名が入っているから、2行目から数えていくことになるでしょう。その場合、ループのスタート地点である初期値は「2」となる。

for(var i = 2 ;条件式;増減式){
//繰り返す処理
}

条件式

for文での条件式は、カウンタ変数の範囲を決定することで処理を繰り返す条件を設定する。

スプレッドシートには6行しかないので、6行目まで処理をすると決めてもいいが、実務においてはデータというのは、増えたり減ったりするもの。

その度に条件式を変えていては自動化の意味がないから、その時に必要な方法をこちらの記事で紹介する。

この場合の結論は、最終行を取得する方法で解決する。

増減式で増やした変数 「i」 が最終行を超えて処理を続けることがないように、「比較演算子」を使って条件式を書いていく。

ここで最終行を「LastRow」と定義。カウンタ変数はLastRow以下まで増える条件に設定するから、「i <= LastRow」と書く。

for(var i = 2 ;i <= LastRow ;増減式){
//繰り返す処理
}

増減式

増減式は、繰り返しの処理を行うたびにカウンタ変数をどれだけ増減させるかを決める式。

自動化を行う際は、一つ一つのセルを確認する必要があるから、カウンタ変数を1ずつ加算する式を表記するには「i = i + 1」を意味する「 i++ 」と表記。

for(var i = 2 ;i <= LastRow ;i++){
//繰り返す処理
}

実際に、セルの値を取得するスクリプトを書く

Google Spreadsheetsのセルに仮定の数値を入力

実際にスプレッドシートのA列2行目のセルから適当な数値を6行目まで、5つほど入力してテスト用の仮定のデータを作成する

メニューバーのツールから、スクリプトエディタを開く。

以下のコードをコピーアンドペーストする。A列の2行目から処理する設定になっているから、コードを触ってスクリプトを回しながら検証することを勧める。

コピペができたら、デバッグをしてからログを確認。

Check GAS log

僕自身、初めてfor文を書いてスクリプトを回した時はすごく感動したことを覚えている。

まとめ

この記事では、繰り返しの処理を行う際に使うfor文について解説した。

ただ、これらを理解する必要があっても、暗記する必要はなく、必要な時にどの方法があるかという引き出しになれば幸い。

分からなくなったら、また調べればいい。調べることもせずに周りのリソースを無駄遣いする方もいるからそんな人にならないようにするだけ。

もしプログラミングに興味がある方は、本よりもUdemyの方が体系的ではなく実戦的に学ぶことができるかも知れない。

プログラミングの本に書いてある事は、どれも同じことしか書いていないのが事実。Udemyでは本で学ぶよりも何倍もの価値を得られる気がする。