Google Apps Scriptで自作オブジェクトについてプロパティを追加・削除するメソッドの作り方


add-remove

photo credit: wuestenigel Colorful kids abacus via photopin (license)

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

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

前回の記事はこちら。

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

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

今回は、そのPersonsクラスにメソッドを追加していきますよ。

ということで、Google Apps Scriptで自作オブジェクトについてプロパティを追加・削除するメソッドの作り方です。

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

前回のおさらい

まず、題材としているスプレッドシートですが、こちらになります。

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

この各行を表すクラスPersonを以下のようにつくりました。

このクラスから生成するPersonクラスは、前述のスプレッドシートの一行分を表すものですから、表全体を表すのはその集合となります。

それで作成したのが、以下のPersonsクラスです。

スプレッドシートの見出し以外のデータ行について、Personクラスを生成します。

そしてそれらを、idをプロパティ、インスタンスのPersonオブジェクトを値としてオブジェクト形式で持つようにしました。

その確認用の関数myFunctionがこちらですね。

今回は、このPersonsクラスにインスタンスの追加と削除をするメソッドを追加していきますよ。

自作クラスにメソッドを追加する

クラスにメソッドを追加するには、以下の記事でお伝えしたとおり、コンストラクタのprototypeプロパティに追加していくんでしたね。

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

オブジェクトに新しいプロパティを追加するメソッド

Personsオブジェクトに、新しいPersonオブジェクトを作成してプロパティとして追加するaddメソッドとを作成しました。

こちらです。

addメソッドで受け取った仮引数recordを元に、Personクラスのインスタンスを生成して、それをPersonsオブジェクト自身にidをプロパティとして追加するというものですね。

ちなみに、recordはid,name,gender,birthdayを要素として持つ配列ですね。

オブジェクトから指定のプロパティを削除するメソッド

今度は、Personsオブジェクトから、指定したidのPersonオブジェクトを削除するremoveメソッドです。

オブジェクトからプロパティを削除するには、delete演算子を使いますね。

delete オブジェクト[プロパティ]

それを使って作成したdeleteメソッドがこちらです。

プロパティを追加・削除するメソッドの動作確認

では、Personsオブジェクトにプロパティを追加するメソッド、およびPersonsオブジェクトからプロパティを削除するメソッドの動作確認をしていきましょう。

検証用の関数myFunctionはこちら。

8~10行目がコメントアウトされているのは…ちょっと意味がありますので、それについては後日解説します。

それで、検証としては6行目に以下のようにブレークポイントを置いて、虫アイコンによる「デバッグ実行」を使ってみようと思います。

ブレークポイントを置いてデバッグ実行

デバッグ実行をするとブレークポイントで止まりますので、その時点でpersons→a04と開いていくと、以下のように内容を確認できます。

ブレークポイントでプロパティの追加と削除を確認する

a04プロパティの追加と、a01削除のプロパティを確認できましたね。

まとめ

以上、Google Apps Scriptで自作オブジェクトについてプロパティを追加・削除するメソッドの作り方をお伝えしました。

追加するプロパティに値を代入すれば追加、削除はdelete演算子ですね。

次回は、Personsクラスについてループを回すときに困ったことが起こるので、その点を解決していきます。

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