Appearance
基本文法
開発によく使う基本的なプログラミング文法を、サンプルコードを動かしながら確認出来ます。
ぜひ手元でコードを動かしながら確認してみてください!
変数と定数
はじめに、 開発する際によく使う変数
について紹介します。
変数
は、コード実行中のある値を、後で再利用するための収納箱でイメージ出来ます。 数値や文字列など様々な種類の値を代入することができます。
GAS で変数を宣言する際には、以下のキーワードを使います。
次にそれぞれの違いについて説明します。
変数 var
var
は、変数であることをプログラムに教えるためのキーワードです。
var
を使って宣言された変数は、どこでもその変数を参照、再代入することが出来ます。
ts
var value = 3;
Logger.log(value); // 3
function variable() {
value = 1;
Logger.log(value); // 1
value = "Hello, GAS!";
Logger.log(value); // Hello, GAS!
}
上記のコードは、value
という変数に数値 1
と3
、文字列 Hello, GAS!
を代入しています。 いずれも、代入後にLogger.log
を使ってコンソールに出力しています。
TIP
実際に GAS を開発し始めるとvar
よりもlet
や const
というキーワードを使うことが多いです。
なぜvar
ではなくlet
やconst
を使うのか次セクション以降で説明します。
変数 let
let
は、変数の使用範囲をブロックスコープ({}
)内に限定し、適用範囲を明確にすることが可能です。
また、同一スコープ内で同じ変数名を再宣言するとエラーが発生するため、誤った変数の再宣言を防ぐことができます。
ts
function letVariable() {
let num = 1;
Logger.log(num); // 1
if (true) {
// ブロックスコープ内で宣言しているので、このブロック内でのみ有効
let num = 2;
Logger.log(num); // 2
}
// let num = 2; // ここでnumを再宣言するとエラーが発生する(2行目と同じブロックで宣言している為)
Logger.log(num); // 1 (同一ブロック内のnumが出力される)
}
TIP
var
よりもlet
をお勧めする理由は、不具合が発生しそうな書き方をすると、エラーで教えてくれるため不具合が生じにくいためです。
定数 const
定数const
は、変数と同じように値を格納することができますが、一度代入した値を変更することができません。
ts
function constant() {
const value = 1;
Logger.log(value);
if (true) {
// ブロックスコープ内で宣言しているので、このブロック内でのみ有効
const value = 2;
Logger.log(value);
}
value = 3; // 再代入が出来ないため、ここでエラーが発生する
Logger.log(value);
}
TIP
基本はconst
を使用し、再代入が必要な場合にlet
を使用すると、開発中の不具合が生じにくくお勧めです。
演算子
演算子は、数値や文字列などの値を計算するための記号です。
よく使う演算子を紹介します。
算術演算子
算術演算子は、数値の計算を行うための演算子です。
ts
function calculator() {
const num1 = 1;
const num2 = 2;
Logger.log(num1 + num2); // 足し算
Logger.log(num1 - num2); // 引き算
Logger.log(num1 * num2); // 掛け算
Logger.log(num1 / num2); // 割り算
Logger.log(num1 % num2); // 剰余
}
上記のコードは、num1
と num2
に数値 1
と 2
を代入しています。 それぞれの数値を使って、足し算、引き算、掛け算、割り算、剰余を計算しています。
比較演算子
比較演算子は、値を比較するための演算子です。
ts
function comparisonOperator() {
const num1 = 1;
const num2 = 2;
Logger.log(num1 === num2); // false
Logger.log(num1 !== num2); // true
Logger.log(num1 > num2); // false
Logger.log(num1 < num2); // true
Logger.log(num1 >= num2); // false
Logger.log(num1 <= num2); // true
}
上記のコードは、num1
と num2
に数値 1
と 2
を代入しています。 それぞれの数値を使って、等しい、等しくない、より大きい、より小さい、以上、以下の比較をしています。
TIP
===
と !==
は、値と型が一致しているかどうかを比較する演算子です。==
と !=
は、値のみを比較する演算子です。
条件分岐
条件分岐は、ある条件が成立する場合のみ処理を実行するための文法です。
ts
function ifStatement() {
const num = 1;
if (num < 5) {
Logger.log("5より小さい");
} else if (num >= 5 && num < 10) {
Logger.log("5以上10未満");
} else {
Logger.log("10以上");
}
}
上記のコードをnum
の値を変えて実行すると、値に応じて表示するメッセージが変わります。
繰り返し処理
繰り返し処理は、同じ処理を繰り返し実行するための文法です。
ts
function loop() {
for (let step = 0; step < 5; step++) {
// stepが 0 から 4 まで実行される
Logger.log(step + "回目");
}
}
for
文を使って、step
の値が 5 以上になるまで順番に Logger.log
で出力しています。
配列
配列は、複数の値をまとめて保持できるデータ型で、[]
を使って定義します。
0
から始まるインデックスで要素の順番と値を管理します。
インデックスを指定して配列から要素を取り出すことができます。
ts
function array() {
const users = ["user1", "user2", "user3"];
Logger.log(users[0]); // user1
Logger.log(users[1]); // user2
Logger.log(users[2]); // user3
}
上記のコードでは、users
という配列に user1
、user2
、user3
という値を格納しています。 users
の要素をインデックスを指定して取り出して Logger.log
で出力しています。
配列の操作
配列には、要素を追加したり削除したりするためのメソッドが用意されています。
要素の追加
配列に要素を追加するには、push
メソッドを使います。
ts
function arrayPush() {
const users = ["user1", "user2"];
users.push("user3");
Logger.log(users); // ["user1", "user2", "user3"]
}
上記のコードでは、users
という配列に user1
、user2
という値を格納しています。 push
メソッドを使って user3
を追加しています。
要素の削除
配列から要素を削除するには、filter
メソッドが便利です。
(位置が既知ならsplice
メソッドでも削除可能です。)
filter メソッドは、指定した条件に一致する要素だけを残して新しい配列を作成します。
ts
function filter() {
const users = ["user1", "user2", "user3"];
const newUsers = users.filter((user) => user !== "user2");
Logger.log(newUsers); // ["user1", "user3"]
}
splice メソッドは、指定したインデックスから指定した数の要素を削除します。
ts
function deleteValue() {
const users = ["user1", "user2", "user3"];
users.splice(1, 1);
Logger.log(users); // ["user1", "user3"]
}
上記のコードでは、users
という配列に user1
、user2
、user3
という値を格納しています。 splice
メソッドを使って、インデックス 1
から 1
つの要素を削除しています。
連想配列
連想配列は、キーと値をペアで保持することが出来るデータ型で、{}
で定義します。
ts
function associativeArray() {
const user = {
name: "user1",
age: 20,
};
Logger.log(user.name); // user1
Logger.log(user.age); // 20
}
上記のコードでは、user
という連想配列に name
と age
というキーと値が格納されています。 user
のキーを指定して値を取り出しています。
関数
関数は、処理をまとめて再利用することが出来ます。
入力値(引数)を受け取り、関数で定義した処理の結果を返すことができます。
ts
function add(a, b) {
return a + b;
}
function function() {
const result = add(1, 2);
Logger.log(result); // 3
}
上記のコードでは、add
という関数を定義しています。 add
関数は、引数 a
と b
を受け取り、それらの足した結果を返します。
まとめ
GAS の開発でよく使うプログラミングの基本的な文法を紹介しました。
サンプルコードのような処理は多くの場面で活用できるため、ぜひ実行しながらコードの挙動を確認してみましょう!