Google Apps Script(GAS)のプログラミングを学ぶ上で、最初に出会う重要な概念の一つが「変数」です。
「変数」と聞くと少し難しく感じるかもしれませんが、その役割はとてもシンプルです。変数は、数値や文字列などの「データ(値)」を一時的に入れておくための「箱」のようなものだと考えてください。
例えば、計算した結果の「100」という数値や、「今日のタスク」というテキストを、後で使うために一時的に保存しておきたい場面があります。そんな時に、名前を付けた「箱」(=変数)を用意して、そこにデータを入れておくのです。
GASを使ってスプレッドシートの特定のセルの値を読み込んだり、メールの本文を作成したりする際にも、この「変数」が必ず登場します。データを一時的に変数に保存し、それを加工したり、別の場所で利用したりします。
この記事では、GAS初心者の方向けに、この「変数」とは何か、どのように使うのか(宣言)、どうやってデータを入れるのか(代入)、そして基本的な使い方について、分かりやすく解説していきます。
変数の使い方をマスターすることは、プログラミングの第一歩です。ここをしっかり押さえて、GASでできることの幅を広げていきましょう。
変数とは?
プログラミングにおける「変数」とは、数値や文字列といったデータ(値)を一時的に保存しておくための「名前付きの箱」や「器」のようなものです 。
GASでスクリプトを作成する際、計算した結果やスプレッドシートから取得した値などを、後で別の処理で使いたい場面がよくあります。そのような時に、データを変数という箱に入れておけば、必要な時にその名前(変数名)を使って中身を呼び出すことができます。
変数を使うには、大きく分けて2つのステップがあります。それは「宣言」と「代入」です。
変数の「宣言」 (箱の用意)
まず、「これからこういう名前の箱を使いますよ」とGASに知らせる必要があります。これを「宣言(せんげん)」と呼びます 。
GASでは、変数を宣言するために let というキーワードを使います。
// 「a」という名前の変数(箱)を宣言する
let a;
上記のように let a; と書くことで、「a」という名前の変数が用意されます 。この時点では、箱が用意されただけで、中身はまだ空っぽの状態です 。
変数の「代入」 (箱に値を入れる)
次に、宣言して用意した変数(箱)に、実際のデータ(値)を入れます。この操作を「代入(だいにゅう)」と呼びます 。
代入には = (イコール)を使います 。
// 変数「a」に数値の「10」を代入する
a = 10;
これで、「a」という名前の箱の中に「10」という数値が入りました 。
実際にGASでコードを書いて、console.log を使って変数の値を確認してみましょう。
function myFunction1() {
// 1. 変数の宣言 (「a」という名前の箱を用意)
let a;
// 2. 変数への代入 (「a」に「10」という数値を入れる)
a = 10;
// 3. 変数「a」の中身をコンソールに出力する
console.log(a);
}
この myFunction1 を実行すると、実行ログに 10 と表示されます。
「初期化」 (宣言と代入を同時に行う)
変数の「宣言」と「代入」は、次のように1行で同時に行うこともできます。
// 変数「a」を宣言すると同時に、「1」を代入する
let a = 1;
このように、変数を宣言すると同時に最初の値を入れることを「初期化(しょきか)」と呼びます 。実際のプログラミングでは、こちらの書き方の方がよく使われます。
function myFunction2() {
// 変数「message」を宣言し、「こんにちは」という文字列で初期化する
let message = 'こんにちは';
// 変数「message」の中身をコンソールに出力する
console.log(message);
}
この myFunction2 を実行すると、実行ログに こんにちは と表示されます。
変数は、プログラミングの基本中の基本です。まずは「let で宣言(箱を用意)し、= で代入(値を入れる)」という流れをしっかり覚えましょう。
変数名のルール
変数につける名前(変数名)は、プログラマーがある程度自由に決めることができます 。ただし、どんな名前でも付けられるわけではなく、GAS(JavaScript)の文法で定められたいくつかのルールを守る必要があります 。
主なルールは以下の通りです。
- 使用できる文字 変数名に使用できるのは、基本的に「英数字」「アンダースコア (
_)」「ドル記号 ($)」です 。- (例)
userName,score1,group_id,$tax
- (例)
- 最初の文字は数字にできない 変数名の先頭(1文字目)に数字を使うことはできません 。
- OKな例:
item1 - NGな例 (エラーになる):
1item
- OKな例:
- 大文字と小文字は区別される GASでは、アルファベットの大文字と小文字は「別の文字」として厳密に区別されます 。
- (例)
name,Name,NAMEの3つは、すべて異なる別々の変数として扱われます 。
- (例)
- 「予約語」は使えない GASの文法において、特別な意味を持つ単語(キーワード)があらかじめ決められています。これらを「予約語(よやくご)」と呼びます 。 予約語は、変数名として使用することができません 。
- (予約語の例)
let,function,if,for,new,whileなど 。
- (予約語の例)
これらのルールを守りつつ、変数の中身が何を表しているのかが分かりやすい名前を付けることが、後からコードを読み返すときや、他の人がコードを読むときに非常に重要になります。
変数の値の変更(再代入)
let を使って宣言した変数の大きな特徴は、一度値を入れた後でも、後から何度でも新しい値を入れ直すことができる点です。これを「再代入(さいだいにゅう)」と呼びます。
箱(変数)の中身を入れ替えるイメージです。
function myFunction3() {
// 1. 変数「a」を宣言し、「1」で初期化する
let a = 1;
console.log(a); // 実行結果: 1
// 2. 変数「a」に「10」を再代入する
a = 10;
console.log(a); // 実行結果: 10
// 3. 変数「a」に文字列「Hello」を再代入する
a = 'Hello';
console.log(a); // 実行結果: Hello
}
このコードを実行すると、console.log が呼ばれるたびに、変数 a の中身が変わっていくのが分かります。
- 最初は
1が入っています。 - 次に
10という新しい数値が代入され、元の1は上書きされて消えます。 - さらに
Helloという文字列が代入され、10が上書きされます。
このように、GASの変数は、最初に数値を入れていた変数に、後から文字列を入れるといったことも可能です 。
変数は、状況に応じて中身を柔軟に入れ替えながら処理を進めるために使われます。
変数を使った演算
変数の便利な点は、中に入れた値を使って計算(演算)ができることです。四則演算(足し算、引き算、掛け算、割り算)や、文字列の連結など、基本的な操作方法を見ていきましょう。
数値の演算
変数に数値が入っている場合、その変数を使って計算ができます。
function myFunction4() {
// 1. 変数n1に「10」を代入
let n1 = 10;
// 2. 変数n2に「4」を代入
let n2 = 4;
// 3. n1とn2を足した結果を、新しい変数「ans」に代入
let ans = n1 + n2;
// 4. 変数ansの中身を出力
console.log(ans);
}
このコードを実行すると、n1 の 10 と n2 の 4 が足され、変数 ans には 14 が代入されます。そのため、実行ログには 14 と表示されます。
このように、変数名を計算式に使うと、GASは自動的にその中身の値(この場合は 10 と 4)を使って計算してくれます。
文字列の連結
+ 演算子は、計算する値が数値ではなく文字列だった場合、計算ではなく「連結(れんけつ)」を行います。
function myFunction5() {
// 1. 変数s1に「スプレッドシート」を代入
let s1 = 'スプレッドシート';
// 2. 変数s2に「自動化」を代入
let s2 = '自動化';
// 3. s1とs2を連結した結果を、新しい変数「s」に代入
let s = s1 + s2;
// 4. 変数sの中身を出力
console.log(s);
}
このコードを実行すると、s1 の 'スプレッドシート' と s2 の '自動化' が連結され、変数 s には 'スプレッドシート自動化' という一つの文字列が入ります。実行ログには スプレッドシート自動化 と表示されます。
複合代入演算子(ふくごうだいにゅうえんざんし)
プログラミングでは、「変数自身の現在の値を使って計算し、その結果を同じ変数に上書きする」という処理が非常によく登場します。
例えば、変数 n の値に 3 を足したい場合、このように書けます。
JavaScript
let n = 8;
n = n + 3; // nの現在の値(8)に3を足して、再びnに代入する
console.log(n); // 実行結果: 11
この n = n + 3; という書き方は、GASでは次のように短く省略して書くことができます。
let n = 8;
n += 3; // n = n + 3; と同じ意味
console.log(n); // 実行結果: 11
この += のような演算子を「複合代入演算子」と呼びます。+ だけでなく、他の計算でも使えます。
| 演算子 | 使用例 | 同じ意味のコード |
+= | n += 5; | n = n + 5; |
-= | n -= 2; | n = n - 2; |
*= | n *= 3; | n = n * 3; |
/= | n /= 4; | n = n / 4; |
ちなみに += は、文字列の連結にも使えます。
let greeting = 'GASへようこそ、';
greeting += '田中さん';
console.log(greeting); // 実行結果: GASへようこそ、田中さん
インクリメントとデクリメント
特に「変数の値を1だけ増やす」または「1だけ減らす」処理は、最もよく使われるため、さらに簡単な書き方が用意されています。
インクリメント(1増やす)
let n = 10;
n++; // 「n++」は「n = n + 1;」と全く同じ意味
console.log(n); // 実行結果: 11
デクリメント(1減らす)
let n = 7;
n--; // 「n--」は「n = n - 1;」と全く同じ意味
console.log(n); // 実行結果: 6
これらの ++(インクリメント)や --(デクリメント)は、繰り返し処理などを行う際に頻繁に使われるので、ぜひ覚えておきましょう。
let と const:変数と定数の違い
GASでデータ(値)を保存する「箱」を用意する際、これまで let を使ってきました。しかし、GASにはもう一つ、let とよく似た const(コンスト)というキーワードがあります。
この2つは、箱に入れた値を「後から変更できるか、できないか」という決定的な違いがあります。
let(変数):値を自由に変更できる
let は「変数(へんすう)」を宣言するために使います 。 変数の特徴は、一度値を入れても、後から何度でも値を再代入(上書き)できることです 。
function letExample() {
// letで「score」を宣言し、50を代入
let score = 50;
console.log(score); // 実行結果: 50
// 値を変更(再代入)する
score = 80;
console.log(score); // 実行結果: 80
}
このように let で宣言した score は、途中で 50 から 80 に変更できます。
const(定数):値を変更できない
const は「定数(ていすう)」を宣言するために使います 。 定数とは、一度値を入れたら、その後一切変更(再代入)が許されない、値が固定された箱のことです 。
const を使うときは、必ず宣言すると同時に値を代入(初期化)する必要があります 。
function constExample() {
// constで「TAX_RATE」を宣言し、0.1を代入
const TAX_RATE = 0.1;
console.log(TAX_RATE); // 実行結果: 0.1
// 定数の値を変更しようとすると...
TAX_RATE = 0.12; // ここでエラーが発生します!
console.log(TAX_RATE);
}
このコードを実行しようとすると、TAX_RATE = 0.12; の行で「TypeError: Assignment to constant variable.(定数への代入)」というエラーが発生します 。
これは、const で宣言した箱の中身は、後から変更してはいけないというルールに違反したためです 。
let と const の使い分け
では、この2つをどう使い分ければよいのでしょうか。
基本的なルールは、「まず const を使えないか考え、値の変更が必要な場合だけ let を使う」です。
const を使う場面:
- 後から値が変わる予定のない、固定の値を入れる時。
- (例) 消費税率、円周率、会社の固定電話番号、スプレッドシートの特定のIDなど。
- 「この値は変わらない」ということをコード上で明確に示せるため、間違いが起こりにくくなります。
let を使う場面:
- 処理の途中で値が変わる必要がある時。
- (例) 計算の途中結果、ループ処理のカウンター(
n++するもの)、状況に応じて内容が変わるメッセージなど。
最初は let だけを使ってもプログラムは動きますが、後から変更したくない重要な値には const を使う癖をつけると、より安全で読みやすいコードを書けるようになります。
文字列が持つ便利な機能(メソッドとプロパティ)
GASでは、変数に代入された文字列(例:'GAS')は、単なる文字の集まりとしてだけでなく、「文字列オブジェクト」という特別なものとして扱われます。
オブジェクトとは、データ(値)と、それに関連する便利な機能(命令)をまとめたものです。
文字列オブジェクトには、最初から便利な機能がたくさん備わっており、それらを使うことで文字列の長さを調べたり、大文字・小文字に変換したりといった操作が簡単に行えます。
この便利な機能には、「プロパティ」と「メソッド」の2種類があります。
プロパティ:文字列が持つ情報
プロパティは、その文字列が「持っている情報(属性)」です。代表的なものに、文字列の長さを表す length があります。
length プロパティ 変数名の後に .length と付けるだけで、その文字列が何文字で構成されているかを取得できます。(ピリオド(.)でつなげる点に注意してください)
function stringPropertyExample() {
let s1 = 'Apps Script';
// s1.length で文字列の長さを取得し、変数「len」に代入
let len = s1.length;
console.log('元の単語: ' + s1);
console.log('文字列の長さ: ' + len);
}
このコードを実行すると、'Apps Script' は(空白も含めて)11文字なので、実行ログには以下のように表示されます。
元の単語: Apps Script
文字列の長さ: 11
メソッド:文字列に対して行う操作
メソッドは、その文字列に対して「特定の処理を行う命令(操作)」です。メソッドを使うには、() (かっこ)を付ける必要があります。
toUpperCase() メソッド 文字列をすべて「大文字」に変換するメソッドです 。
toLowerCase() メソッド 文字列をすべて「小文字」に変換するメソッドです 。
trim() メソッド 文字列の「両端にある不要な空白(スペース)」を削除するメソッドです 。
これらのメソッドは、元の変数の値を直接変更するのではなく、処理を行った「結果の文字列」を返します(これを「戻り値(もどりち)」と呼びます)。そのため、処理結果は別の変数に代入して使います。
メソッドとプロパティを使った例
length プロパティと toUpperCase メソッドを使ったコードを見てみましょう。
function stringMethodExample() {
// 元の文字列
let s1 = 'gas programming';
// toUpperCase() メソッドで大文字に変換し、結果を変数s2に代入
let s2 = s1.toUpperCase();
// length プロパティで元の文字列の長さを取得
let len = s1.length;
console.log('元の単語: ' + s1);
console.log('大文字に変換: ' + s2);
console.log('文字列の長さ: ' + len);
}
実行結果:
元の単語: gas programming
大文字に変換: GAS PROGRAMMING
文字列の長さ: 15(半角空白も1文字としてカウント)
このように、s1 自体は変わりませんが、s1.toUpperCase() によって大文字に変換された結果が s2 に代入されています。
文字列には、ここで紹介した以外にもたくさんの便利なメソッド(例えば、文字列の一部を切り出す slice や、特定の文字を置き換える replace など)が用意されています。これらを使いこなすことで、GASでできることが格段に広がります。
まとめ
お疲れ様でした。今回は、Google Apps Script(GAS)のプログラミングに不可欠な「変数」について学びました。
変数は、let を使って宣言する「値を入れておく箱」のようなものです 。後から値を変更(再代入)できるのが特徴です 。 一方、const で宣言する「定数」は、一度値を入れると変更できない箱でした 。まずはこの2つの使い分けを意識しましょう。
また、変数を使って数値の計算をしたり 、+ 演算子で文字列を連結したりする方法を紹介しました 。n++ のように値を1だけ増やすインクリメント や、n += 2 のような複合代入演算子 も、コードを簡潔にするためによく使われます。
最後に、文字列が持つ .length(長さの取得)や .toUpperCase()(大文字変換) といった便利な機能(プロパティとメソッド)にも触れました。
変数は、GASであらゆる自動化処理を行うための基礎となります。この記事を参考に、まずは簡単な変数の宣言と代入から試してみてください。








