みなさん、こんにちは!
タカハシ(@ntakahashi0505)です。
初心者向けGoogle Apps Script超入門ということで、Botの作成を目指しながらGASプログラミングの基本を学んでいきます。
前回の記事はこちら。
スプレッドシートのセル範囲とその値を取得する方法についてお伝えしました。
これまでは、正直あんまりBotっぽさをお伝えできていなかったのですが、今回から徐々に近づいていきますよ。
まず、今回はfor文を使って、スプレッドシートのリストの上から順に取得して表示をしていく方法について伝えします。
ということで、Google Apps Scriptでfor文を使った繰り返しの超基本についてです。
では行ってみましょう!
今回のお題:名言を順番に表示したい
まず、題材としているスプレッドシートはこちらです。
珠玉の名言の数々がリストされています。
Botなので、何らかの法則で、いずれかの名言を取得してChatworkなり、Slackなりに通知したいということなのですが、まずは簡単なところから上から順に行ってみます。
リストのヘッダー行を除いて、2行目から最終行まで繰り返して、名言を取得して出力したいわけです。
さて、そんな「リストを順番に」処理したいというときには、繰り返しと言われる種類の処理を使います。
for文の使い方
GASで繰り返しをしたいとき、よく使われるのはfor文です。
for文は決まった回数だけ繰り返すときに適していまして、以下のように書きます。
// 繰り返す処理
}
波括弧で囲われた部分をforブロックといい、この中の処理を何らかのルールで繰り返すのですが…ちょっと意味分かんないですかね。
一つずつ説明していきます。
初期化式
まず、for文では「カウント変数」という整数値を扱う変数が活躍します。
カウント用変数はよく「i」や「j」という変数が用いられます。
初期化式では、まずこのカウント変数の初期値を指定します。
今回の場合、2行目から最終行まで繰り返しをしたいわけですから、カウント変数の値を2に設定しておくとよいということになります。
for(let i = 2; 条件式; 増減式) { //処理 }
条件式
次に条件式について説明します。
条件式は、カウント変数がいくつになるまで繰り返しをするかを指定するための式です。
条件式は、比較演算子を使って表現します。
例えば、今回の場合は239行目までなので、「カウント変数の値が239以下の間」繰り返す、つまり条件式としては「i <= 239」と表現します。
for(let i = 2; i <= 239; 増減式) { //処理 }
増減式
最後に増減式です。
増減式は、繰り返しのたびにカウント変数をどれだけ増減させるかを指定する式です。
よく使うのは、「繰り返しのたびに1をプラスする」です。
四角四面に書いたら「i = i + 1」なのですが、この記述は「i++」と簡略して書くことができます。
つまり、以下のように書くことができます。
for(let i = 2; i <= 239; i++) { //処理 }
ちなみに、カウント変数が定数ではなくて、上書き可能な変数、つまりキーワードletで宣言している理由は、「i++」で上書きをしているからです。
これで、「カウント変数iの初期値2から239以下の間、1増やしながら繰り返す」というfor文が完成しました。
getLastRowメソッドで最終行数を求める
最終行数なのですが「239」が一生変わらないのであればいいのですが、名言が増えた場合、最終値を変更しなければなりませんね。
そのような手間がないように、シートの最終行数を自動で取得する便利なメソッドがあります。
getLastRowメソッドです。
名言を順番にログ出力するスクリプト
以上を踏まえて、名言リストを順番にログ出力するスクリプトを作成しました。
function myFunction() { const sheet = SpreadsheetApp.getActiveSheet(); const lastRow = sheet.getLastRow(); for(let i = 2; i <= lastRow; i++) { console.log(sheet.getRange(i, 1).getValue()); } }
4~6行目がfor文になりますね。
5行目のgetRangeメソッドの行番号に変数iを指定していますね。
つまり、カウント変数iに行番号を担わせて、2行目からlastRow(つまりデータがある最終行番号)までの範囲でプラス1しながら繰り返しをさせるというものです。
実行すると、以下のようにログ出力されます。
行番号にカウント変数を指定するという繰り返し処理の書き方は、あちこちで使用しますので、ぜひ覚えておいてくださいね。
まとめ
以上、Google Apps Scriptでfor文を使った繰り返し文の超基本についてお伝えしました。
for文は一見複雑そうですが、カウント変数の役割や各式の意味をきちんと理解していればそれほど難しい構文ではありませんね。
また、getLastRowメソッドは便利に使えますので、ぜひ使えるようにしておいてください。
次回は、if文による条件分岐についてお伝えします。
どうぞお楽しみに!
連載目次:超初心者向けGASでBotを作りながら基礎を学ぶ
Google Apps Script(GAS)をはじめるためのメリットは山程ありますが、何を作ったらいいの?と悩んでしまうこともありますよね。そんな時に、おすすめしたいのが「Bot」の作成です。このシリーズでは、超初心者向けにGASでBotを作る方法を題材としながら、GASプログラミングの一通りの流れと書き方について学んでいきます。- 【初心者向けGAS】本当の最初の一歩!スクリプトエディタでプロジェクトを開く
- 【初心者向けGAS】はじめてのスクリプトを作成し、保存し、実行する
- 【初心者向けGAS】プログラミングに必須の変数&定数の使い方とデータ型について
- 【初心者向けGAS】ログを表示するconsole.logの使い方とテンプレート文字列
- 【初心者向けGAS】スクリプト実行時の「承認」でびっくりしないために
- 【初心者向けGAS】Spreadsheetサービスの「オブジェクト」の基礎の基礎を知ろう
- 【初心者向けGAS】スプレッドシートのシートを取得する2つの方法
- 【初心者向けGAS】スプレッドシートのセル・セル範囲とその値を取得する方法
- 【初心者向けGAS】for文を使ったスプレッドシートの繰り返しの超基本
- 【初心者向けGAS】条件分岐をするif文の使い方の超基本
- 【初心者向けGAS】スプレッドシートのセルに値を入力する基礎の基礎
- 【初心者向けGAS】条件に応じてループを制御する2つの方法~break文とwhile文~
- 【初心者向けGAS】スプレッドシートのセル範囲を行数・列数を使って取得する
- 【初心者向けGAS】スプレッドシートのセル範囲をクリアするいくつかの方法
- 【初心者向けGAS】Google Apps ScriptでWeb APIを活用するための基礎知識
- 【初心者向けGAS】面倒なことはライブラリに任せよう!その概要と追加の方法
- 【初心者向けGAS】Chatworkのマイチャットにメッセージを送る最も簡単な例
- 【初心者向けGAS】Google Apps Scriptで別の関数を呼び出すfunctionの書き方
- 【初心者向けGAS】時限式のイベントトリガーを設置して決まった時刻にBotを送信する方法
- 【初心者向けGAS】プロパティストアの概要とスクリプトプロパティの編集方法
- 【初心者向けGAS】スクリプトプロパティを操作してそのデータを取り出す方法
- 【初心者向けGAS】スプレッドシートのセル範囲の値を二次元配列として取得して取り扱う方法
- 【初心者向けGAS】Chatworkのメッセージ記法でBot送信するメッセージを装飾する方法
- 【初心者向けGAS】Google Apps Scriptのドキュメンテーションコメントの書き方