この連載では僕が所属しているノンプロ研で受講した、GAS初級講座での気づきをまとめています。前回の記事はこちらです。
前回は関数・配列について学びました。JavaScript(GAS)の特徴がわかってきた気がします。
今回は「オブジェクト」です。この言葉、最近のプログラミングではよく出てくるのですが、いまひとつ意味が分かりません。GASではどのような意味があるのでしょうか。
オブジェクト型
JavaScript(GAS)におけるオブジェクト型とは、データ型の1つです。プロパティをキーとするデータの集合です。記述方式は以下になります。
{プロパティ1:値1,プロパティ2:値2,プロパティ3:値3,・・・}
プロパティは任意の文字列、プロパティのデータ型は任意です。これはPythonの辞書型と同じみたいですね。オブジェクト型のデータは、ほかのデータ型と同様に変数・定数に代入できます。
オブジェクトの値の参照方法は、変数・定数の名前(またはオブジェクト自身)にドット「.」でプロパティを記述する方法(ドット記法)、角かっこプロパティ文字列を指定する方法(ブラケット記法)があります。以下はドット記法とブラケット記法の使用例です。
const person = { name: 'Bob', gender: 'mail', age: 25 }; person.name = 'Tom';//ドット記法 person['age'] = 30;//ブラケット記法 console.log(person); //{ name: 'Tom', gender: 'mail', age: 30 }
設定済のオブジェクトにプロパティを追加できます。また、ブラケット記法ではプロパティに変数・定数を使用できます。
const person = { name: 'Bob', gender: 'mail' }; person.name = 'Tom'; //プロパティを追加する person['job'] = 'Engineer'; //プロパティに変数・定数を使用 const prop = 'favorite'; person[prop] = 'Coffee'; console.log(person); //{ name: 'Tom', gender: 'mail', job: 'Engineer', favorite: 'Coffee' }
ドット記法の方が書きやすいですが、ブラケット記法はプロパティを変数・定数で指定したいときに便利です。
for...in文
for...in文を使用するとオブジェクトのすべてのプロパティを取り出せます。記述方式は以下になります。
for (const 定数(または、let 変数) in オブジェクト) { //処理 }
この様に記述すると、定数(または変数)にオブジェクトのプロパティが1つずつセットされます。定数を指定しても、繰り返しごとに異なるプロパティがセットされます。とくに問題なければ定数を使用しましょう。 また、この時取り出し順は保証されていません。
ブラケット記法で取り出した値を指定すれば、対応するオブジェクト内の値を取り出せます。
メソッド
オブジェクト型のプロパティには、関数を割り当てることができます。この場合、プロパティとは呼ばずにメソッドと呼びます。
{ プロパティ1:値1, プロパティ2:値2, プロパティ3:値3, 関数名(仮引数1,仮引数2,・・・){ //処理 return 戻り値; }, ・・・ }
通常の関数と一緒で、仮引数、戻り値は使用しない場合省略できます。 メソッド内に「this」を使用することで、オブジェクト内のプロパティ値を参照できます。
const person = { name: 'Bob', age: 25, isAdult() { //thisを使用してオブジェクト内のプロパティ値を参照できる。 return this.age >= 18; } }; console.log(person.isAdult()); //true
オブジェクト
ここまでデータ型の1つであるオブジェクト型についてみてきましたが、実はほかのデータ型も含めてすべてオブジェクトになります。 数値型、文字列型、ブール型など基本的なものをプリミティブ型と呼びます。また、これらを包み込んだオブジェクトをラッパーオブジェクトといいます。
プリミティブ値も含めて、オブジェクトの操作はプロパティの取得/設定とメソッドの処理によって操作されます。 GASで提供されるサービスは、オブジェクトとして扱え、同様の操作が可能です。
次回はスプレッドシート操作
ここまで、基本構文、制御構文、データ型、関数、オブジェクト等について学んできました。 Googleから提供されているさまざまなサービスは、オブジェクトとして扱うことができて、操作は メソッドで行います。次回から、ここまで学んできたことを使ってスプレッドシートの操作に取り組みたいと思います。お楽しみに!!