どもども平社員の龍ちゃんです。今回も「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リストのデータベースとしてスプレッドシートを利用することができますね。開発の具体的な流れは、こちらのライトブログでも合わせて報告を入れていきますので、ぜひご一読ください。
いかにシリーズをまとめています。
- Google Apps Script 導入 初心者向け
- Google Apps Script スプレッドシート編 初心者向け
- Google Apps Script 簡易データベース編 初心者向け
- Google Apps Script 簡易API編 初心者向け
ではでは!またよろしくお願いします( *´艸`)。