Google Apps Scriptのクラスでプライベートプロパティを作成する方法


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

「初心者でもわかるGoogle Apps Scriptでクラスを作ろう!」をシリーズでお送りしております。

前回の記事はこちらです。

Google Apps Scriptでスプレッドシートのデータの1行分を表すクラスを作る方法
「初心者でもわかるGoogle Apps Scriptのクラスの作り方」をテーマにシリーズをお送りしています。今回は、GASでスプレッドシートのデータの1行分を表すクラスを作る方法です。

スプレッドシートの表の一行分を表すクラスを作成しました。

ただ、このクラスをもとに生成したインスタンス、すべてのプロパティが外部から読み書き自由です。

特にid…そう簡単に上書きされたら困りますよね。

ということで、今回はプロパティを上書きできないようにしていきます。

では、Google Apps Scriptのクラスでプライベートプロパティを作成する方法です。

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

前回のおさらい

まず、対象としているスプレッドシートはこんな感じのものです。

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

このスプレッドシートの各行のデータを表すクラスを作成しました。

こちらです。

各列のデータをそれぞれid,name,gender,birthdayというプロパティで表して、かつ挨拶をするgreetメソッド、全部のデータをログ出力するlogメソッドを追加しました。

ただ、冒頭でもお話したとおり、idプロパティ…できれば上書きできないようにしたいですよね(実際、名前も性別も誕生日もですがw)。

ということで、今回はidを表すデータについて外部から上書きできないようにしていきます。

プライベートメンバーを定義する

idを表すデータについて外部から上書きできないようにする…要件を整理すると、以下のようなかたちです。

  • インスタンス内にいわゆるプロパティ以外の方法でデータを保持をする
  • そしてそのidのデータは外部からアクセスできない

これを実現する方法として、JavaScriptではプライベートメンバーという方法が用意されています。

プライベートメンバーの構文

なんか難しそうな名前ですが、コンストラクタ内でvarキーワードを使った変数や関数を普通に宣言するというものです。

プライベートプロパティであれば

var 変数名

プライベートメソッドであれば

var メソッド名 = function(引数1, 引数2,…) {
 //処理
}

とします。

プライベートプロパティを作るスクリプト

今回はプライベートプロパティをつくりたいので、以下のようにしてみました。

ちなみに、変数名をアンダースコア(_)からはじめているのは、慣例的に使用されている「プライベートのしるし」です。

実行すると、以下のようなログが確認できます。

プライベートプロパティへのアクセス

変数_idにはアクセスできませんね。

プライベートメンバーの仕組み

プライベートメンバーの仕組みですが、何も特別なことをしているわけではなく、スコープを利用しているだけです。

コンストラクタは関数ですから、その中の変数は外部からは参照することができません。

一方で、new演算子で呼び出されてインスタンス化されていますので、そのインスタンスが存在している間、その内部の変数は保持されているのです。

まとめ

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

スコープの仕組みさえ頭に入っていれば、まあ普通のことですね。

ただ…このままでは上書きもできませんが、読み取りもできないですよね…

ということで、次回は読み取りをするためのメソッドを作っていきます。

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をコピーしました