Google Apps Scriptでデータの集合を表すクラスを作成する方法


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

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

前回の記事はこちら。

Google Apps Scriptでスプレッドシートの表をインスタンス配列化する方法
「初心者でもわかるGoogle Apps Scriptのクラス」をテーマにシリーズ連載をお送りしております。今回は、GASでスプレッドシートの表をインスタンス配列化する方法をおお送りします。

スプレッドシートの表のデータを、独自クラスのインスタンスの配列にする方法をお伝えしました。

以降、この配列化した「データの集合」に対しても色々な処理をしていきたいわけなので、今回はその「データの集合」をクラス化していきますよ。

Google Apps Scriptでデータの集合を表すクラスを作成する方法です。

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

前回のおさらい

対象としているスプレッドシートは以下のようなものです。

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

まずは、この一行ずつのデータを表すクラスを作成しました。

こちらのクラスPersonです。

このクラスのインスタンスが、先ほどのスプレッドシートの一行分を表すPersonオブジェクトとなります。

データ行は複数ありますので、それを配列化する処理を以下のmyFunctionで作成しました。

ただ、どうせスプレッドシートの表から全部のデータを取得してインスタンス化しますし、そのデータの集合についても処理を追加していきたくなります。

なので、その「データの集合」を表すクラスPersonsも作っておきたいかなと思います。

今回は、その部分を進めていきます。

スプレッドシートのデータ行の集合を扱うクラスを作る

それでは、スプレッドシートのデータ行の集合を表すクラスを作っていきましょう。

前述のmyFunctionの処理を、即時関数内のコンストラクタPersonsに置き換えていけば良さそうですよね。

以下のようにつくりましたよ。

コンストラクタPersonは、プロパティpersonsに配列を持ちます。

その配列は、スプレッドシートから取得したデータを元に生成したインスタンスの配列となります。

クラスPersonsの動作を確認する

では、クラスPersonの動作を確認していきましょう。

結果を検証するために、関数myFunctionを以下のように変更してみました。

実行すると、以下のように正しく出力されます。

クラスPersonsが持つデータをログ出力

インスタンスのプロパティを省略したい

ただ、先ほどのmyFunction…「persons.persons.length」とか、「persons.persons[i].log()」とか、ちょっと操作する命令を書くのがうざいです。

それもそのはず。

というのも、Personsオブジェクトの主データである配列は以下の表記のように、personsプロパティを使ってはじめて取り出せるわけですよね。

Personsオブジェクト.persons

それで取り出した配列の要素がPersonオブジェクトですから、それに対してlogメソッドなんかを使ったりします。

PersonsオブジェクトからPersonオブジェクトを取り出すのにプロパティが必要で、その取り出した値にさらにプロパティやメソッド…と二段構えになるので、ステートメントが長くなっちゃうんですね。

んー、もっとコンパクトに記述して取り扱いたいですよね。

オブジェクトでデータの集合を表す

データの集合を表す方法は配列のほかに、オブジェクトがあります。

Personsクラスに「id」をプロパティにして、そのidを持つPersonオブジェクトを値として格納するように変えてみてはどうでしょうか。

GASは配列が便利なイメージありますが、こちらも比較的スッキリしていますね。

オブジェクトとしてデータを持つクラスの動作を確認

では、オブジェクトとしてデータを持つクラスPersonの動作を確認していきましょう。

関数myFunctionはこんな感じです。

おお…けっこうスッキリですね。

ひとまず、今回はこちらのほうが良さそうです。

まとめ

以上、Google Apps Scriptでデータの集合を表すクラスを作成する方法をお伝えしました。

「データの集合を表すクラス」の表現方法、今回はオブジェクトが良さそうでしたが、他にも様々な方法があると思いますので、ぜひ研究をしてみてくださいね。

では、次回以降、作成したPersonsクラスに色々な処理を追加していきます。

どうぞお楽しみに!

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