【初心者向け】Google Apps Scriptでクラスを理解するためのオブジェクトの基礎知識


base

photo credit: mikecogh Empty Arbra via photopin (license)

みなさん、こんにちは!
タカハシ(@ntakahashi0505)です。

ノンプログラマーにとって理解が難しいと言われる「クラス」

Google Apps Scriptでは、クラスやその仕組みがわからなくてそれなりのツールを作ることはできます。

ただ、以下の記事で書いている通り、早い段階で理解をしていたほうがメリットが大きいと感じています。

ノンプログラマーでも「クラス」を学ぶべき理由
ノンプログラマーがVBAやGASを学習していくと、その先に謎の言葉ばかりが登場する恐怖のエリア登場します。「クラス」です。今回は、「なぜノンプログラマーがクラスを学ぶべきなのか」について書きたいと思います。

オブジェクトの理解が深くなり、クラスを使うという選択肢が増えます。

実際、拙著「詳解!Google Apps Script完全入門」では、簡単ではありますが紹介するようにしました。

ということで、今回から「初心者でもわかるGoogle Apps Scriptのクラス」をテーマに、その使い方についてお伝えしていきます。

初回の今回は、Google Apps Scriptでクラスを理解するためのオブジェクトの基礎知識についてお伝えしていきます。

では、行ってみましょう!

スポンサーリンク

「クラス化」を目指すお題について

さて、シリーズを通してどのようなクラスを作るのかを先にお伝えしておきます。

こちらです。

スプレッドシートのテーブル

ただの、スプレッドシートの表ですね。

おそらく、多くのGAS初心者にとって最も身近なデータの扱い方とも言えますからね。

イメージしやすいであろう、このスプレッドシートの表について「クラス化」を目指していきます。

クラスのためのオブジェクトの知識

それで、クラスを理解するためには、まずオブジェクトをちゃんと理解しておく必要があります。

というのも、クラスはオブジェクトを作るものだからです。

オブジェクトとは

Google Apps Script(というか、JavaScript)では、データの集合を表す方法がいくつかあります。

そのうちの一つが「オブジェクト」です。

オブジェクトとは、データの集合を表す一つのかたちで、別名「連想配列」とも呼ばれます。

以下の図のように、オブジェクトの中に任意の名前を付けた箱を用意して、その中に値を格納することができます。

Google Apps Scriptのオブジェクト

また、その箱をプロパティといい、名前すなわちプロパティ名をつけることができます。

オブジェクトの定義

GASでオブジェクトを定義するときには、以下のように波かっこの中に、プロパティと値をコロン(:)でつないだセットを、カンマ区切りで列挙します。

{
 プロパティ1: 値1,
 プロパティ2: 値2,
 …
}

この表記をオブジェクトリテラルと言いますね。

オブジェクトのプロパティを参照する

定義したオブジェクトについて、プロパティを参照するには、以下のようにオブジェクトに続いて、ピリオド(.)とプロパティを記述します。

オブジェクト.プロパティ

オブジェクトを作成するスクリプト

例えば、前述のスプレッドシートのメンバーリストのBobさんのデータを表すのであれば、以下のようにオブジェクト化することができます。

function myFunction() {
 
  const p = {
    id: "a01",
    name: "Bob",
    gender: "male",
    birthday: new Date(1993, 0, 1) //1月は「0」
  };
 
  console.log(p);
  console.log('id:%s name:%s, gender:%s, birthday:%s', p.id, p.name, p.gender, p.birthday);
}

スプレッドシートの見出しに対応した、id、name、gender、birthdayというプロパティにそれぞれの値を格納します。

実行して、変数pの中身についてのログをスクリプトエディタのメニュー「表示」→「ログ」で確認してみましょう。

作成したオブジェクトをログ出力

オブジェクトの作成と参照はうまくいっているようですね。

オブジェクトはこのような形にデータを集める方法です。

メソッドとその呼び出し

さて、オブジェクトのプロパティには値を格納することができますが、Google Apps Script(というかJavaScript)では値として「関数」も格納することができます。

プロパティに関数を格納したとき、その要素をプロパティとは言わずにメソッドと呼ぶようになります。

オブジェクトリテラルでいうと、メソッドの定義は以下のようになります。

{
 …,
 メソッド(仮引数1, 仮引数2, …){
  //処理
 },
 …
}

オブジェクトのメソッドを呼び出すには、以下のようにオブジェクトに続いて、ピリオド(.)とメソッドそして丸かっこ内に必要に応じて引数を記述します。

オブジェクト.メソッド(引数1, 引数2, …)

オブジェクトのメソッドを呼び出すスクリプト

では、前述のスクリプトを修正して、メソッドも追加してみましょう。

function myFunction() {
 
  const p = {
    id: "a01",
    name: "Bob",
    gender: "male",
    birthday: new Date(1993, 0, 1), //1月は「0」
    greet(){
      Browser.msgBox(p.name + "です、こんにちは!");
    }
  };
 
  p.greet();
 
}

スプレッドシート上にメッセージダイアログを表示するgreetメソッドを追加しました。

実行して、スプレッドシートを確認してみると、以下のようにメソッドが実行されたことを確認できます。

オブジェクトのメソッドを呼び出す

まとめ

以上、Google Apps Scriptでクラスを理解するためのオブジェクトの基礎知識についてお伝えしました。

まずはクラスを理解するための基礎知識として、以下を抑えておきましょう。

  • オブジェクトとは何か
  • オブジェクト、プロパティ、メソッドの定義の方法

次回は、クラスとインスタンス化についてお伝えしていきます。

初心者でもできるGoogle Apps Scriptで最も簡単なクラスを作る方法
今回は、初心者でもできるGoogle Apps Scriptで最も簡単なクラスを作る方法です。クラス、new演算子、インスタンスという難しそうなワードも超丁寧に解説していきますよ。

どうぞお楽しみに!

連載目次:初心者向けGoogle Apps Scriptでクラスを作ろう

使いどころやそのメリットが分かりづらいGASの「クラス」。本シリーズでは、初心者でもわかるように「これでもか!」とじっくり着実にクラスとそのメリットについて解説をしていきます。
  1. 【初心者向け】Google Apps Scriptでクラスを理解するためのオブジェクトの基礎知識
  2. 初心者でもできるGoogle Apps Scriptで最も簡単なクラスを作る方法
  3. Google Apps Scriptでクラスに最も簡単なプロパティを追加する方法
  4. Google Apps Scriptでクラスに最も簡単なメソッドを追加する方法
  5. Google Apps Scriptでスプレッドシートのデータの1行分を表すクラスを作る方法
  6. GASでゲッターを使って簡単なプロパティを作成する方法
  7. GASでセッターを使ってプロパティの入力に制限をかける

タイトルとURLをコピーしました