Google Apps Scriptでクラスに最も簡単なプロパティを追加する方法


instant

photo credit: La Chachalaca Fotografía Sunflower + Instant Sunflower via photopin (license)

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

「初心者でもわかるGoogle Apps Scriptのクラス」をテーマにシリーズでお伝えしております。

前回の記事はこちら。

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

GASで最も簡単なクラスの作り方をお伝えしました。

ただ、ちょっと簡単すぎて「空っぽのオブジェクト」を作るクラスだったんですよね…

ということで、今回はGoogle Apps Scriptでクラスに最も簡単なプロパティを追加する方法です。

プロパティを追加して、「空っぽじゃないオブジェクト」を生成するクラスを作ります。

あと、thisキーワードの意味についてもお伝えしますよ。

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

前回のおさらい

まずは、前回のおさらいです。

作成したスクリプトはこちらでした。

まず、Personがコンストラクタになりますね。

コンストラクタは、new演算子で生成されたインスタンスにあれこれ定義するために呼び出される関数です。

GASでが、このコンストラクタがクラスの正体でしたね。

ただ、コンストラクタには何の処理も定義されていませんでしたので、生成されたインスタンスも空っぽのオブジェクトでした。

今回は、コンストラクタにプロパティを定義していこうということです。

クラスにプロパティを追加する

クラスから生成されたインスタンスはオブジェクトですから、プロパティとメソッドを持つことができるはずです。

まずは、生成したインスタンスにプロパティを持たせるようにしてみましょう。

例えば、クラスPersonから、nameという1つのプロパティを持つオブジェクトを生成したいとします。

こんなときコンストラクタPersonにはどのような処理を追加したら良いかというと、以下のようになります。

では、実行してログを確認してみましょう!

生成したインスタンスにnameプロパティを追加

ちゃんとインスタンスにnameプロパティが追加されていることを確認できますね。

thisキーワードとは

「this」という見慣れないものが登場しましたね…

これはthisキーワードと呼ばれるもので、コンストラクタ内で使った場合は生成されたインスタンス自体を表すキーワードとなります。

ですから、コンストラクタ内で以下のように記述することで、そのプロパティを定義することができます。

this.プロパティ = 値

(このthisキーワードですが、「どこで使うか」によって、その表すものが変わってきますので注意が必要です。コンストラクタ以外で使用する場合については、別の役割を持ちますのでシリーズを通して紹介していきますね。)

インスタンス生成時にプロパティをセットする

では、以下のようなスクリプトを作って実行してみましょう。

クラスPersonからインスタンスを2回作ってみようというものです。

ログを確認してみると…

生成されたインスタンスのnameプロパティの値が同じ

生成した2つのインスタンスについて、そのnameプロパティが両方とも「Bob」になっちゃいますね。

まあ、当たり前と言えば当たり前ですが。

別のインスタンスであれば、そのプロパティに別の値を格納したいですよね…

生成してからプロパティをいちいち上書きするのもバカバカしいですし。

いったい、どうすればよいでしょうか?

コンストラクタに引数を渡す

さて、前回の記事で紹介した、new演算子を使ってコンストラクタを呼び出す書式を思い出してください。

こちらです。

var 変数 = new 関数名(引数1, 引数2,…)

ほら、関数(=コンストラクタ)を呼び出すときに、渡せるんですよ、引数が。

ですから、先ほどのスクリプトも、コンストラクタの呼び出し時に、それぞれ別の引数を渡します。

そして、コンストラクタではその受け取った値を、プロパティに代入する形にしてあげれば良いんですね。

実行してログを確認すると…

インスタンスに別々のプロパティの値を設定

ばっちり!

インスタンス生成時にプロパティに別々の値を渡すことができましたね。

まとめ

以上、Google Apps Scriptでクラスに最も簡単なプロパティを追加する方法をお伝えしました。

今回は何と言ってもthisキーワードがポイントですね。

コンストラクタ内で使用する場合は、生成したインスタンス自体を表す便利なキーワードです。

ちょっと不思議な気もしますが、とっても重要なので、今後ともよろしくお願いします。

次回は、クラスにメソッドを追加していきます。

Google Apps Scriptでクラスに最も簡単なメソッドを追加する方法
「初心者でもわかるGoogle Apps Scriptのクラスを作ろう!」のシリーズをお送りしています。今回はGASでクラスに最も簡単なメソッドを追加する方法です。プロトタイプについても解説していますよ。

どうぞお楽しみに!

連載目次:初心者向け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をコピーしました