GAS PR

[GAS]Google Apps Scriptの基本構文まとめ

記事内に商品プロモーションを含む場合があります

Google Apps Script (GAS) の基本構文についてまとめます。

GASは、JavaScriptをベースに作られていますので、JavaScriptの経験のある方はすでにご存知の内容と思います。

チートシートとしてもご利用ください。

Google Apps Scriptの基本的な使い方については下記をご覧ください。

Google Apps Scriptのデータ型

GASの主なデータ型には下記があります。

・数値型(number):整数や小数を表す型
・文字列型
(string):文字列を表す型
・真偽型
(boolean):true(真)とfalse(偽)を表す型
・null
:値がないことを表す型
・undefined
:値が定義されてないことを表す型
・配列型
(array):複数のデータ群を表す型。インデックス番号で制御する。
・オブジェクト型(object):複数のデータ群を表す型。プロパティ名で制御する。

変数を利用する場合、データ型を宣言する必要はありません。変数に値を代入したタイミングで、自動的に型が選ばれます。

変数がどのデータ型になっているか確認するには、typeof関数を利用します。

例えば、下記のコードを実行します。

実行結果は下記になります。自動で型が設定されていることがわかります。

なお、配列型の場合は、arrayではなくobjectと表示されます。配列もオブジェクト型の一種のためです。

また、配列型とオブジェクト型については、別の章で詳細を後述します。

Google Apps Scriptの変数宣言

GASの変数宣言にはデータ型は指定する必要はないですが、宣言にはlet、const、varの3種類があります。それぞれの違いは下記です。

項目letconstvar
再代入不可
再宣言不可不可
スコープブロックブロック関数

再代入は、値が代入されている変数に値を上書きすることです。

再宣言は、宣言された変数を別途新たに同じ名前の変数で宣言することです。

スコープは、変数を利用できる範囲です。

varが自由度が高いのですが、その分不具合が起きやすいため利用しない方が良いです。

そのため、基本的に変数にはletを利用して、値を変更しない定数として扱う場合はconstを利用するのがいいでしょう。

Google Apps Scriptの文字列表現

文字列は、「’」(シングルクォーテーション)、「”」(ダブルクォーテーション)「`」(バッククォート)のいずれかで囲んで表現します。

「’」と「”」で囲む場合は、下記のようにお互いの記号を文字列に含めることができます。

「バッククォート」で囲む場合は、文字列の中に下記の書式( ${変数名} )で変数の値を含めることができます。

実行結果は下記になります。

Google Apps Scriptの配列

配列の代入

配列に値を代入する場合、下記のような形式で行います。

実行結果には下記が出力されます。

要素を指定して値を代入する場合は、下記のようになります。途中の要素を飛ばしても代入できます。飛ばされた要素にはnullが入ります。

実行結果は下記になります。
0番目は100で上書きされます。8番目は99、空だった4番目〜7番目の要素はnullになります。

配列の分割代入

分割代入とは、複数の変数に、配列の各要素をまとめて代入することです。

下記の構文で利用できます。

実行結果は下記になります。
a,b,c,dに配列の各要素が代入されます。
stringA,stringB,striingC,stringDには、配列testArrayの各要素が代入されます。
ちなみに、stringDは要素がないためundefiendになります。

配列のスプレッド構文

スプレッド構文とは、配列や文字列などを展開するための構文です。
下記のように、変数の前にドットを3つ付与して記述します。

実行結果は下記です。下記のように配列の各要素の値が展開されます。

また、下記のように文字列に対してスプレッド構文を使うと、

下記のように1文字ずつ展開されます。

Google Apps Scriptのオブジェクト

オブジェクトの代入

オブジェクトに値を代入する場合、下記のような形式で行います。

実行結果は下記になります。

上記のように、値の参照には、「testObject.プロパティ名」の書き方と「testObject[‘プロパティ名’]」の2つの書き方があります。

オブジェクトの分割代入

分割代入とは、複数の変数に、オブジェクトの各要素をまとめて代入することです。

下記の構文で利用できます。変数の名前と、オブジェクトのプロパティ名は一致させる必要があります

実行結果は下記になります。
変数a,b,c,dにオブジェクトの同じ名前の値が代入されます。
変数stringA,stringB,striingCには、オブジェクトの同じ名前の値が代入されます。

オブジェクトのスプレッド構文

スプレッド構文とは、配列や文字列などを展開するための構文です。
下記のように、変数の前にドットを3つ付与して記述します。

実行結果は下記です。
オブジェクトの各要素の値が展開され再代入されます。
また、console.log内でオブジェクトのスプレッド構文を利用した場合はエラーになります。

Google Apps Scriptの条件分岐

指定した条件式の結果がtrue(真)かfalse(偽)かによって、その後の処理を分岐する構文です。

if文の条件分岐

ifの後に条件式を記載し、trueであればブロック内の処理を実行して終了し、falseであれば後続の条件式へ進みます。

下記のように記述します。不要であればelse以降は省略可能です。

xが12の場合、「12は、10より大きい」と出力、
xが6の場合、「6は、5より大きくて10以下」と出力、
xが1の場合、「1は、5より小さい」と出力されます。

xが12の場合は、(x > 5)も満たしていますが、(x > 10)の処理で終了するため、(x > 5)の処理は実行されません。

このように、上から順番に条件式が判定され、条件式を満たせば処理を実行してif文を終了します。

switch文の条件分岐

switchの後に条件式を記載し、caseで指定した値と一致した場合にその処理を実行します。
処理実行後にswitch文は終わらず、それ以降の全ての処理を実行します。

下記のように記述したとします。defaultはいずれも一致しなかった場合という意味です。

実行結果は下記になります。case “B”やdefaultの処理も実行されています。
このように該当したところ以降の処理が実行されるのがswitch文です。

しかし、実際には、該当した部分の処理だけを実行してほしいことがほとんどだと思います。

そのため、下記のように各処理の後にbreak文を入れます。break文の時点でswitch文は終了します。

実行結果は下記になります。

Google Apps Scriptの繰り返し処理(ループ)

同じ処理を繰り返す際に利用する構文です。

while文の繰り返し処理

whileの後の条件式がtrue(真)の間、ブロック内の処理を繰り返します。

実行結果は下記になります。

for文の繰り返し処理

指定したカウンタ変数の条件式がtrue(真)の間、ブロック内の処理を繰り返します。

実行結果は下記になります。

for…of文の繰り返し処理

配列のすべての要素に対して処理を行います。文字列に対しても利用できます。

下記の実行結果になります。

また、文字列に対して利用した場合は下記のようになります。

実行結果は下記です。

for…in文の繰り返し処理

オブジェクトのすべての要素を順不同で取得して処理を行います。

下記のように実行します。

下記の実行結果になります。valueにはプロパティの名前が入っています。

Google Apps Scriptの算術演算子・代入演算子関連

四則演算などには下記の記号を利用できます。

演算子説明結果
+足し算または文字列の連結1 + 3
“abc” + “def”
4
abcdef
引き算4 – 13
*掛け算3 * 39
/割り算12 / 43
%割り算の余り15 % 123
**べき乗2 ** 416

下記のように計算結果を直接変数に代入できる演算子もあります。

演算子説明結果(xの値)
+=値を足し算して代入x = 1; x += 3;
x = “abc”; x += “def”;
4
abcdef
-=値を引き算して代入x = 4; x -= 1;3
*=値を掛け算して代入x = 3; x *= 3;9
/=値を割り算して代入x = 12; x /= 4;3
%=値を割り算した余りを代入x = 15; x %= 12;3
**=値をべき乗して代入x = 2; x **= 4;16

また、下記のような1足したり1引いたりする演算子もあります。

演算子説明結果(xの値)
++1足すx = 10; x++;11
--1引くx = 10; x--;9

Google Apps Scriptの比較演算子

条件式に利用できる比較演算子は下記が利用できます。

演算子説明結果
==左辺と右辺が等しい場合に true10 == 10
10 == “10”
true
true
!=左辺と右辺が等しくない場合に true10 != 9true
<左辺が右辺より小さい場合に true2 < 3true
<=左辺が右辺以下の場合に true2 <= 2true
>左辺が右辺より大きい場合に true3 > 2true
>=左辺が右辺以上の場合に true3 >= 2true
===左辺と右辺がデータ型も含め等しい場合 true10 === 10
10 === “10”
true
false
!==左辺と右辺がデータ型も含め等しくない場合 true10 !=== 10
10 !=== “10”
false
true

イメージしにくい「==」「!=」と「===」「!==」の違いについて実際に実行してみます。

下記を実行してみると、

下記の実行結果になります。

Google Apps Scriptの論理演算子

複数の条件式を組み合わせたり、trueとfalseを反対にする論理演算子には下記を利用できます。

演算子説明結果
&&いずれもtrueの場合 true10 == 10 && 9 == 9
10 == 10 && 9 == 8
10 == 9 && 9 == 8
true
false
false
||どちらかがtrueの場合 true10 == 10 || 9 == 9
10 == 10 || 9 == 8
10 == 9 || 9 == 8
true
true
false
!trueとfalseを反対にする!(10 == 10)
!(10 == 9)
false
true

Google Apps ScriptのTry…Catch文

スクリプト実行時に例外エラーが発生すると処理が停止してしまいます。

例外エラーが発生しても、発生したエラーに応じて何らかの処理を継続するにはTry…Catch文を利用します。

下記のように記述します。

tryブロックには、実行したい処理を入れます。ここでは、console.logにオブジェクトのスプレッド構文を入れることで例外エラーを出しています。

catchブロックには、エラーが発生した場合に実行したい処理を入れます。eとはエラーメッセージの内容が入った変数です。

finallyブロックには、エラーが発生するかしないかにかかわらず実行したい処理を入れます。finallyブロックは省略可能です。

実行結果は下記になります。エラー停止することなく最後まで実行されます。

なお、独自の例外エラーを出したい場合は、下記の構文で例外エラーを発行できます。

Error関数の部分は、RangeError、ReferenceError、SyntaxError、TypeErrorなどエラーの種類を指定した関数でも同じように実行できます。そうすることで、何の種類のエラーなのかがわかりやすくなります。

Google Apps Scriptの関数

GASにおける関数に関する構文についてです。

function文による関数宣言

基本的な関数の宣言方法です。

下記のように関数を宣言します。

testFunctionという関数を宣言しています。
num1とnum2は引数です。不要であれば省略できます。
return文で戻り値を指定できます。不要であれば省略できます。

実行結果は下記になります。

なお、下記のように関数名の末尾に「_」(アンダースコア)をつけることでプライベート関数になり、プロジェクト外からは見えない関数にできます。

下記のように実行する関数の選択からも見えなくなります。

関数リテラルによる関数宣言

関数を変数に代入したり、オブジェクトの要素として追加したり、引数としても利用できる宣言方法です。

下記のように関数を宣言します。下記は変数に代入する場合の例です。

関数名は不要です。関数を変数に代入しており、変数名で関数を呼び出せます。

関数名が不要なため、関数名が重複してしまうことを防げるのがメリットです。

変数名の末尾に「_」(アンダースコア)をつけることでプライベート関数にできます。

アロー関数による関数宣言

関数リテラルをよりシンプルにした宣言方法です。

下記のように関数を宣言します。下記は変数に代入する場合の例です。

「function」も不要になります。「=>」で引数と処理ブロックをつなぎます。

アロー関数には条件次第でさらに省略形があります。

■引数が一つの場合の省略形

下記のように、引数の前後の括弧「()」を省略できます。

■処理が1行の場合の省略形

下記のように、処理ブロックの括弧「{}」を省略できます。

■処理が一つでreturn文のみの場合の省略形

下記のように、「return」という文字は不要で戻り値を指定できます。

なお、引数がない場合は、下記のように括弧が必要です。

デフォルト引数

GASでは、関数を呼び出す際の引数の数と、関数で宣言された引数の数が不一致でもエラーにはなりません。

引数の数が異なる下記を実行したとします。

実行結果は下記です。

引数が足りない場合は、undefinedになります。
引数が多い場合は、後ろの引数は無視されます。

引数が足りないケースでもundefinedにならないよう、デフォルト引数でデフォルトの値を設定できます。

下記のようにデフォルト値を設定したい引数に「=」を付けて値を指定します。下記の場合はyのデフォルト値を2に設定しています。

同じコードを実行すると、今度は実行結果は下記になります。

残余引数

引数が多すぎると、超えた引数は無視されると説明しましたが、すべての引数を受け取る関数を作りたい場合は、残余引数というもので実現できます。

下記のように、引数名の前にドットを3つ付けた引数を残余引数と呼びます。

実行結果は下記になります。
残余引数の部分は、引数の数を超えて呼ばれたとしても配列としてすべて受け取れます。

ドキュメンテーションコメント

関数の内容がわかるよう、関数の直前に下記のような書式でコメントを残します。

上記の書式で記載しておくことで、下記のようにコード入力時に説明が表示されるというメリットもあります。

Google Apps Scriptのクラス

クラスの定義

GASでのクラス定義の構文を説明します。

クラスは、下記の構文で作成します。

プロパティ

クラスでプロパティを定義するには、コンストラクタ関数を利用します。

class文の中に下記の構文で記述します。

メソッド

クラスでメソッドを定義するには、class文の中に下記の構文で記述します。

静的プロパティ

静的プロパティは、クラスをインスタンス化しなくても直接使用できるプロパティです。

クラスで静的プロパティを定義するには、class文のあとに下記の構文で記述します。

静的メソッド

静的メソッドは、クラスをインスタンス化しなくても直接使用できるメソッドです。

クラスで静的メソッドを定義するには、class分の中に下記の構文で記述します。

クラスのインスタンス化

クラスをインスタンス化するには、下記の構文で記述します。

実行例

ここまで説明した構文を実際のコード例は下記です。

実行結果は、下記になります。

まとめ

Google Apps Script (GAS) の基本構文についてまとめました。

GASは無料で利用できてとても便利なツールです。

Googleスプレッドシート等のGoogleアプリケーションを利用されている方は、GASを習得することで作業を大きく効率化できます

プログラミングの考え方や基礎について体系的に学びたい方は、プログラミングスクール「デイトラ」がおすすめです。

「Web制作コース」では、Google Apps ScriptのベースとなるJavaScriptを学べます。

おすすめポイント①:圧倒的なコストパフォーマンス

3カ月で数十万円かかることも珍しくない中で、デイトラは、10万円以下という業界最安級の価格で提供されています。

おすすめポイント②:1日1題形式のため継続しやすい

1日1題形式のため、初心者の方でも継続しやすい学習形式になっています。1年間のメンターによるサポートも付いており、わからないところもアドバイスしてもらえるため、自分で調べて学ぶよりも理解を深められます

おすすめポイント③:教材を無期限で閲覧可能

教材は、1年間のサポート期間終了後も閲覧でき、いつでも復習に利用できます。教材がアップデートされた場合も、常に最新版を閲覧できます。コース費用に無期限で利用できる教材が含まれていることを考えても、コストパフォーマンスの良いスクールと言えます。

興味のある方は、コース内容を確認してみてください。