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


base

photo credit: mikecogh Empty Arbra via photopin (license)

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

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

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

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

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

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

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

ブログではページ数などを気にせず、初心者でもわかるように「これでもか!」とじっくり着実にクラスを解説することができます。

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

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

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

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

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

こちらです。

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

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

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

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

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

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

オブジェクトとは

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

1つはみんな大好き「配列」。

そして、もう一つが「オブジェクト」です。

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

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

Google Apps Scriptのオブジェクト

また、箱の名前をプロパティといいます。

オブジェクトの定義

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

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

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

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

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

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

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

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

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

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

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

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

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

メソッドとその呼び出し

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

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

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

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

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

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

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

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

スプレッドシート上にメッセージダイアログを表示する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. Google Apps Scriptのクラスでプライベートプロパティを作成する方法
  7. Google Apps Scriptでプライベートプロパティを取得するメソッドを作成する方法
  8. GASでdefinePropertiesメソッドを使ってクラスにプロパティを定義する方法
  9. Google Apps Scriptで即時関数にクラスを定義する理由とその方法
  10. Google Apps Scriptでスプレッドシートの表をインスタンス配列化する方法
  11. Google Apps Scriptでデータの集合を表すクラスを作成する方法
  12. Google Apps Scriptで自作オブジェクトについてプロパティを追加・削除するメソッドの作り方
  13. Google Apps Scriptでオブジェクトに直接追加しているプロパティだけループする方法
  14. GASでselfを使って関数の中からインスタンスを表すthisを使えるようにする方法
  15. GASでオブジェクトのデータをスプレッドシートに反映させるメソッドの作り方

  投稿者プロフィール

タカハシノリアキ株式会社プランノーツ 代表取締役
株式会社プランノーツ代表、コミュニティ「ノンプロ研」主宰。1976年こどもの日生まれ。東京板橋区在住。「ITで日本の『働く』の価値を上げる!」をテーマに、VBA&GASの開発、講師、執筆などをしております。→詳しいプロフィールはコチラ
★ご依頼・ご相談はお気軽にどうぞ!→お問い合わせはコチラ
★フォロー頂ければ嬉しいです。

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