Google Apps Scriptでプライベートプロパティを取得するメソッドを作成する方法


crane

photo credit: gsx-r750 Why? Because they could! via photopin (license)

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

初心者でもわかるGoogle Apps Scriptでクラスを作るシリーズです。

前回の記事はこちら。

Google Apps Scriptのクラスでプライベートプロパティを作成する方法
「初心者でもわかるGoogle Apps Scriptでクラスを作ろう!」をシリーズでお送りしております。今回は、Google Apps Scriptのクラスでプライベートプロパティを作成する方法です。

GASのクラスにプライベートプロパティを作成する方法をお伝えしました。

今回は、そのプライベートプロパティの値を取得できるメソッドを作っていきます。

ということで、Google Apps Scriptでプライベートプロパティを取得するメソッドを作成する方法です。

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

前回のおさらい

まず、以下のようなスプレッドシートがあります。

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

前回までで、この表の各行を表すクラスを作成しました。

それがこちらです。

コンストラクタPerson内で宣言している変数_idがプライベートプロパティでした。

プライベートなので、実行しても14行目のログは「undefined」。アクセスはできません。

プライベートプロパティの値を取得するには?

今回は、このPersonクラスのプライベートプロパティ変数_idの値を取得する方法を考えたいのですが、どうすれば良いでしょうか?

普通に変数_idを参照することはできませんので、メソッドを経由して取得する方法を模索していくことにしましょう。

prototypeプロパティにメソッドを追加する

「メソッド」を作りたいわけですから、以下の記事でお伝えしたとおり、Personクラスのprototypeプロパティを使いたいとなります。

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

変数_idの値を返す、getIdというメソッドを追加してみましょう。

しかし、実行すると以下のように 『「_id」が定義されていません。』というエラーになってしまいます。

変数にアクセスできないエラー
そうなんです、変数_idをプライベートにしているものはそのスコープ

コンストラクタ関数内で定義されていることで、その関数内でのみアクセス可能になるから、だからこそのプライベートなんです。

コンストラクタ関数の外にあるステートメントからはアクセスはできないのです。

コンストラクタ内にメソッドを定義する

したがいまして、今回はprototypeプロパティへのメソッド追加は断念。

コンストラクタ内に、普通にメソッドを定義することにします。

こちらです。

実行結果はこちらです。

プライベートプロパティの値をログ出力

このように、プライベートプロパティの値を取得することができました。

prototypeの利点がなくなってしまいますが、プライベートプロパティにアクセスするには仕方なし、ですかね。

まとめ

以上、Google Apps Scriptでプライベートプロパティを取得するメソッドを作成する方法をお伝えしました。

プライベートプロパティを取得するメソッドは、スコープの関係でクラスのprototypeプロパティには定義できないので、コンストラクタ内に直接定義する必要があります。

次回は、プライベートプロパティにアクセスする別の方法を紹介していきます。

GASでdefinePropertiesメソッドを使ってクラスにプロパティを定義する方法
「初心者でもわかるGoogle Apps Scriptでクラスを作ろう!」をテーマとしたシリーズをお送りしています。今回はGASでdefinePropertiesメソッドを使ってプロパティを定義する方法です。

どうぞお楽しみに!

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