GASでオブジェクトのデータをスプレッドシートに反映させるメソッドの作り方


apply

photo credit: Got Credit Apply via photopin (license)

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

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

前回の記事はこちら。

GASでselfを使って関数の中からインスタンスを表すthisを使えるようにする方法
「初心者でもわかるGoogle Apps Scriptのクラス」をテーマにお送りしています。今回は、GASでselfを使って関数の中からインスタンスを表すthisを使えるようにする方法です。

「var self = this」を使って、関数内でもインスタンスを表すthisを使える方法をお伝えしました。

ナンノコッチャ…という方は、ぜひ記事をご覧いただければと…

さて、GASでスプレッドシートの表のデータを扱うクラスを作って参りましたが、今回がラストです。

インスタンスで色々とデータを操作した後に、スプレッドシートに反映させるメソッドを作っていきますよ。

ということで、Google Apps Scriptでオブジェクトのデータをスプレッドシートに反映させるメソッドの作り方です。

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

前回のおさらい

まず、お題としているスプレッドシートはこちらです。

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

このスプレッドシートの一行ずつのデータを表すクラスがこちらの、クラスPersonです。

このクラスから生成されたインスタンスを集合として取り扱うクラスPersonsがこちらです。

前回はPersonsクラスのlogメソッドを頑張ってつくりました。

そして、その確認のためのmyFunctionはこんシンプルなものでした。

今回は、このPersonsクラスのメンバーに追加や変更や削除などをした結果を、再度スプレッドシートに反映するメソッドを作っていきます。

オブジェクトのデータをスプレッドシートに反映するメソッド

早速、スプレッドシートにPersonsオブジェクトのデータを反映するapplyToSheetメソッドを紹介していきましょう。

こちらを、コンストラクタPersonsに追加します。

ちょっと長くて申し訳ないのですが、修正したコンストラクタPersonsを再掲します。

Personsクラスの変更点

まず、3行目ですがSheetオブジェクトはPersonsインスタンスを生成するときと、applyToSheetメソッドと両方で使うので、外出して変数sheetに入れました。

48~62行目がそのapplyToSheetメソッドです。

  1. sheetの値を全部クリアする
  2. sheetに書き込むデータを2次元配列として変数valuesにpush
  3. valuesをシートに書き込む

実行テスト

では、実行して確認してみましょう。

以下のようなmyFunctionを作成して実行します。

スプレッドシートは以下のように変更されました。

スプレッドシートにオブジェクトのデータを反映した

OKですね。

データを配列に変換して取得するメソッド

一点だけ、PersonsクラスのapplyToSheetメソッドですが、各データを配列にしてpushする57行目がちょっと長いですね。

例えば、Personクラスに以下のように、オブジェクトのデータを配列に変換して返すtoArrayメソッドを追加してみましょう。

スプレッドシートは配列での取り扱いが便利ですから、このメソッドもあちこちで使い所ありそうですね。

すると、PersonsクラスのapplyToSheetメソッドは、このように変更できます。

10行目がちょっぴりエコになりましたね。

先ほどのmyFunctionを実行して、正しくスプレッドシートが反映されることを確認しましょうね。

まとめ

以上、Google Apps Scriptでオブジェクトのデータをスプレッドシートに反映させるメソッドの作り方をお伝えしました。

なんでわざわざクラス作ってやるのか…という感じがするかも知れませんが、全体としては

  1. スプレッドシートのデータをオブジェクト化する
  2. オブジェクトに対してあれこれ操作をする
  3. オブジェクトのデータをスプレッドシートに反映する

とこのような手順をとることになります。

クラスを作るのはそこそこ大変ですが、できちゃえばメインの処理であるmyFunctionはたったの10行程度でした。

つまり、クラスに処理を追いやることで、メインの処理をシンプルに作れるようになるんですね。

例えば、サイドバーやWebページから操作するときなどに、応用できると思いますよ。

また、クラスを使った事例があれば紹介していきたいと思います。

どうぞお楽しみに!

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