変数とは何か?
GASで処理を行うときに、よく出てくるのが「変数」です。
「変数」を使うと、値を一時的に記録し、後で読み出すことができます。
とりあえずは、次のようなイメージを持っておくといいでしょう。
- 値を記入できる紙が入っている「箱」に「名前」が付いているもの
- そのプログラム専用で使える「セル」に名前が付いているもの
要するに、「名前を付けて」、その「名前を使って」「値を読み書きできる」というのが、変数のポイントです。
数学でも「変数」という概念があります。ただ、数学の「変数」とプログラムの「変数」は全然別のもの、と考えておくほうが理解しやすい、という方が多いようです。
変数の使用例
実際に、変数を使う例を見てみましょう。
function variableTest1() {
let data;
data = 3;
SpreadsheetApp.getActiveSheet().getRange(2, 1).setValue(data);
}
このプログラムでは「data」という変数が使われています。
このプログラムを実行してみると、アクティブシートのA2セルに「3」と表示されます。
変数を使うときの流れ
変数を使うときには、次の順番で使います。
- 変数の名前を「定義」する
- 変数に値を「記録」したり、変数から値を「読込」する
ポイントは、変数を使う場合には、必ず、変数の名前を「定義」する必要があるということです。その後に、変数に値を「記録」したり「読込」をしたりすることになります。
たとえば、先ほどのプログラムでは、「data」という変数を使っています。そして、変数「data」の「定義」、「記録」、「読込」を、次の箇所で行っています。
let data;
data = 3;
SpreadsheetApp.getActiveSheet().getRange(2, 1).setValue(data);
以下、順番に説明していきます。
変数を「定義」する
変数を使うためには、まず、変数を「定義」します(変数を「宣言」するとも言います)。
let data;
先ほどの例では、この文で「data」という名前の変数を「定義」しています。
変数を「定義」することで、以下、このfunctionの中(※)で、「data」という名前で、値を「記録」したり、記録した値を「読込」むことができるようになります。
変数の「定義」の有効範囲は、変数を定義する「場所」により変わります。今回の例では、function文の直後で「定義」をしているので、function全体で、この変数が使えます。
変数に値を「記録」する
data = 3;
変数「data」に「3」という値を「記録」します。
GASでは「=」の記号を《右辺の値を左辺の変数などに「記録」する》意味の記号として使います。
GASで出てくる「=」には「等しい」という意味はありません。普段の「=」記号のイメージは忘れて、新たな記号として覚えるのが、混乱しないコツです。
変数から値を「読込」する
以降のプログラム中で「data」と書くと、変数「data」の内容を読み込むことができます。
たとえば、下記の文では、setValueの括弧の中に「data」と書いているため、指定したセルに変数「data」の値を書き込む、という意味になります。
SpreadsheetApp.getActiveSheet().getRange(2, 1).setValue(data);
今回は、アクティブシートの2行1列目(=A2セル)に値を書き込もうとしていますので、A2セルに変数「data」の内容「3」が書き込まれることになります。
変数の「宣言」と「記録」を同時に行う
次のように書くと、変数の「宣言」と「記録」は同時に行うことができます。
let data = 3;
「定義」(「let data」)と「記録」(「data = 3」)を同時に書ています。これで、変数の「宣言」をして、同時に値の「記録」をすることができます。
変数に値を「記録」しないで「読込」を行うと不具合の元になることが多いです。そのため、できるかぎり、変数の「宣言」と同時に、値の「記録」をするようにしましょう。
このような、変数の「宣言」と同時に値の「記録」を行うときの「記録」のことを、変数の「初期化」といいます。
この書き方を使うと、プログラムの全文は、次のようになります。
function variableTest1() {
let data = 3;
SpreadsheetApp.getActiveSheet().getRange(2, 1).setValue(data);
}
当然、実行結果も、先ほどとまったく同じになります。