Google Apps Script 簡易データベース編 初心者向け

◆ Live配信スケジュール ◆
サイオステクノロジーでは、Microsoft MVPの武井による「わかりみの深いシリーズ」など、定期的なLive配信を行っています。
⇒ 詳細スケジュールはこちらから
⇒ 見逃してしまった方はYoutubeチャンネルをご覧ください
【4/18開催】VSCode Dev Containersで楽々開発環境構築祭り〜Python/Reactなどなど〜
Visual Studio Codeの拡張機能であるDev Containersを使ってReactとかPythonとかSpring Bootとかの開発環境をラクチンで構築する方法を紹介するイベントです。
https://tech-lab.connpass.com/event/311864/

どもども平社員の龍ちゃんです。今回も「Google Apps Script」第3弾!です。今回は、前回学んだ「スプレッドシートを扱う方法」を利用して、スプレッドシートを簡易的なデータベースとして構築します。今回も登場「以下の図」です。こちらでデータベースを構築することで、簡単なAPIをバージョンアップさせることができます。それでは初めて行きましょう。

目標とするもの

成果物の理想図です。今回作成するのは、プログラミング勉強の定番「ToDoリスト」です。保存したいデータとしては、「ID/task/created/state」の4つになります。各項目が何を指しているのかは図で確認してください。また、今回は「CRUD」を実装していきます。データを扱う場合、「作成・読み込み・編集・削除」の4つの要素が基本となります。CRUDとは、この4つの英単語の頭文字をとったIT用語となります。今回は、合計4つの関数をGASで作成していきます。

それでは、始めましょう。

事前準備

今回用意するのは、「スプレッドシート・GASエディタ」だけです。まずは、適当なスプレッドシートをGoogle ドライブ上に作成しましょう。

スプレッドシートが開けたら、スプレッドシートのIDをどこか適当なところにメモしておきましょう。もし「なんのこっちゃ?」という方がいましたら、一度こちらを読んでみてください。IDのメモの次は、以下の図のように「ID/task/created/state」と入力しておきましょう。

これにて事前準備終了です。それではコーディングしていきましょう。

コーディング解説

完成形

今回作成した完成版のコードになります。注意点があります!コピーをする際は「const file = SpreadsheetApp.openById(“xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx”)」の部分を先ほどメモしたIDに置き換えてください。

共通処理

ここでは、すべてのメソッドで共通となる処理を書いています。スプレッドシートを指定して、使用するシートを指定している部分です。これは、異なるシートを扱う場合においても使用するので、これからスプレッドシートを扱っていく予定のある方はメモをしておくとよいかもしれません。

Create 作成

ここで必要となる機能としては、最終行の特定とデータの書き込みです。まず、前半部分でデータの最終行を特定します。データの要素数は決まっているので列は必要ありません。

IDは自動で重複なしのIDを生成してくれる機能を利用します。ここで重複なしIDを保存するのには、IDを足掛かりとして情報の操作を行うためです。

書き込み部分の指定が少し厄介です。新しいデータなので、データがない列を指定して書き込む必要があります。最終行に1つ足すことで、データがない行を表現しています。

Read 読み取り

ここで必要となる機能としては、データの取得です。データの取得は、すべての情報を取得する場合と特定の情報を取得する場合があります。関数は、全件取得と一件取得で分割しています。データの流れとしては、すべての情報を取得して特定の情報を取得し、IDを検索し特定の情報を抽出する方が良いかと思います。

なぜ?こういった手順を踏むかといいますと、「SpreadsheetApp」クラスを呼び出す回数を減らすためです。一度、呼び出した値を保存することで単純な場合だと、2回呼ぶ場合が1回で済みます。

データの取得部分を見てください。ここでは、先ほどと異なり最終行から1つ引いた数を代入しています。これは、「getRange」の第一引数が2であることと関係しています。もし第一引数が1だった場合、ヘッダー部分が取得されます。2に変更した場合で、最終行から1を引かなかった場合では、データの最後にデータが入っていない空白のデータが含まれてしまいます。この辺は、いろいろいじってみて苦しんでみてください。

データの探索部分では、jsの機能であるfilterを使用しています。使用方法はこちらから。

Update 更新

ここで必要となる機能としては、データの取得とデータの書き込みです。データの取得では、IDをキーとして行番号を取得し、データを変更します。読み取りの手順とほぼ一緒です。ここでIDを以前と同じにしておくとテストがとてもやりやすいです。

データの探索部分では、jsのfindIndexを使用しています。説明はこちらから。findIndexを使用することで、配列の中から一致するキーがある場合、そのデータが配列の何番目にあるかの番号を取得できます。

データアップデートの部分を見てください。また「getRange」の指定の部分が特殊ですね。これは、配列が0番目からカウントされること、スプレッドシートの左上の指定が(1,1)で始まることが関係しています。

Delete 削除

ここで必要となる機能としては、データの取得と特殊なメソッドです。新しいメソッドが出てきます。情報の操作は「更新」と同様です。行番を取得したら「deleteRow」メソッドを利用しましょう。使用方法はこちらから。

行ごと削除の部分を見てください。こちらも更新部分と同様の理由で+2されています。

おわりに

さて今回は、「GASとスプレッドシートを利用した簡易データベース」について話を進めていきました。この説明は、今後の開発に必要となるのでログとして残しました。これで、ToDoリストのデータベースとしてスプレッドシートを利用することができますね。開発の具体的な流れは、こちらのライトブログでも合わせて報告を入れていきますので、ぜひご一読ください。

いかにシリーズをまとめています。

ではでは!またよろしくお願いします( *´艸`)。

アバター画像
About 龍:Ryu 107 Articles
2022年入社で主にフロントエンドの業務でTailwindと遊ぶ日々。お酒とうまいご飯が好きで、運動がちょっと嫌いなエンジニアです。しゃべれるエンジニアを目指しておしゃべりとブログ執筆に注力中(業務もね)//
ご覧いただきありがとうございます! この投稿はお役に立ちましたか?

役に立った 役に立たなかった

2人がこの投稿は役に立ったと言っています。


ご覧いただきありがとうございます。
ブログの最新情報はSNSでも発信しております。
ぜひTwitterのフォロー&Facebookページにいいねをお願い致します!



>> 雑誌等の執筆依頼を受付しております。
   ご希望の方はお気軽にお問い合わせください!

Be the first to comment

Leave a Reply

Your email address will not be published.


*


質問はこちら 閉じる