第4回では、コードに説明文を残すコメントの書き方(// や /* */)と、後から見返しても理解しやすいコードを作るコツを整理しました。コードの目的をメモしておく習慣は、これからのGAS学習で大いに役立ちます。
第5回では、プログラミングの超重要概念である「変数(const と let)」を解説します。データに名前を付けて一時的に保存する方法を覚えると、同じ値を何度も使ったり、計算途中の値を更新したりといった処理がスムーズに書けるようになります。
第5回のゴール
今回のゴールは、const と let の違いを理解し、適切に使い分けてデータを扱えるようになることです。
- 変数とは何か(データを入れる箱)をイメージできる
- 再代入しない値に const を使える
- 途中で値を変える変数に let を使える
- 変数を使うことでコードが読みやすく、修正しやすくなるメリットがわかる
変数とは?(値に名前を付ける箱)
変数とは、データ(文字列や数値、シートオブジェクトなど)を一時的に入れておくための「名前付きの箱」です。
プログラミングでは、同じデータやオブジェクトを何度も参照したり、途中で計算結果を変えたりします。変数を使うことで、値の意味がわかりやすくなり、コードの修正も1か所の変更で済むようになります。
今回使うサンプルコード
今回は、文字や数値を変数に入れ、スプレッドシートのセルに書き込みながら、let で数値を更新していくサンプルコードを使います。
function variablePractice() {
// 再代入しないものは const を使う
const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
const title = "GAS学習メモ";
// 後から値を変更するものは let を使う
let count = 1;
// A1セルにタイトル、A2セルに現在のカウントを入力
sheet.getRange("A1").setValue(title);
sheet.getRange("A2").setValue(count);
// カウントを1増やす(再代入)
count = count + 1;
// A3セルに更新後のカウント(2)を入力
sheet.getRange("A3").setValue(count);
}
このコードを実行すると、A1に「GAS学習メモ」、A2に「1」、A3に「2」がそれぞれ書き込まれます。
実行手順
- Googleスプレッドシートを開きます。
- メニューから「拡張機能」→「Apps Script」を開きます。
- エディタにサンプルコードを貼り付けます。
- 保存します(Ctrl + S または Cmd + S)。
- 関数名で variablePractice を選択します。
- 「実行」ボタンを押します。
- スプレッドシートのA1、A2、A3セルに正しい値が入力されたか確認します。
const と let の使い分け
GAS(JavaScript)で宣言するキーワードは主に const と let の2つです。
| キーワード | 特徴 | 再代入 | 主な使いどころ |
|---|---|---|---|
const | 定数(再代入不可) | × 不可 | シートの取得、固定のメッセージ、設定値など |
let | 変数(再代入可能) | ○ 可能 | ループのカウント、計算途中の合計値など |
基本ルールとして、「まずはすべて const で書き、後から値を入れ替える必要が出たときだけ let に変更する」 という方針をおすすめします。うっかり値を上書きしてしまうバグを防ぐことができます。
分かりやすい変数名の付け方
変数名は自由につけられますが、中身がひと目で推測できる名前をつけるのが鉄則です。
- 良い例:
const sheet = .../const userEmail = .../let totalAmount = 0 - 悪い例:
const x = .../let a1 = ...(何が入っているか分からない) - キャメルケース(2語以上の場合は2語目以降を大文字にする):
userName,targetRange
初心者がよくつまずくポイント
- const で宣言した変数に再代入してしまう:
TypeError: Assignment to constant variable.というエラーが発生します。再代入が必要ならletに切り替えましょう。 - 変数名に
constやletを繰り返し付けてしまう:宣言するとき(最初の一度)だけconst x = ...と書き、値を変更するときはx = ...と書きます。 - 引用符(" ")で囲んでしまう:
setValue(count)をsetValue("count")と書いてしまうと、変数の中身ではなく文字通りの「count」が入力されてしまいます。
小さな練習
理解を深めるために、次の練習を行ってみましょう。
const title = ...の文字を自分の好きなタイトルに変えて実行してみるconst title = "新しいタイトル";をコードの下部に追加して再代入を試し、エラーが出ることを確認するlet countの初期値を 10 に変えて実行し、A2セルとA3セルの値がどう変わるか確認する
関連記事・参考リンク
- GAS入門講座 第1回|Google Apps Scriptで自動化の第一歩を体験しよう
- GAS入門講座 第2回|Apps Scriptエディタの基本画面と実行ログの見方
- GAS入門講座 第3回|Logger.logで処理の途中経過を確認しよう
- GAS入門講座 第4回|コメントを書いてコードを読みやすくしよう
- MDN Web Docs:JavaScript 変数
まとめ
今回は、GAS入門講座の第5回として、const と let を使った変数の基本を学びました。
変数はプログラムの基本中の基本です。「再代入しないものは const」「再代入するものは let」という原則を押さえて、わかりやすい変数名を付ける癖をつけていきましょう。
次回は、「文字列をつなげてメッセージを作ろう」(文字列結合とテンプレート文字列)を解説します。
