Google Apps Script API 作成修行

◆ エンジニア業務環境アンケート結果 ◆
エンジニアが自分の働き方にどういったことで満足していて、不満を感じているのか、働きたい会社像として何を求めているのか、業務環境調査を実施しました。ぜひご覧ください。
⇒ アンケート結果はこちらから

どもども!こんにちは平社員の龍ちゃんです。今回は、Google Apps Scrip(通称:GAS)を使って「TODOリスト」を実現するためのAPIを構築していこうと思います。前回の記事(Google Apps Scriptで「REST API」を作る)では、GASの制限を回避してREST APIっぽいものを実現する方法について解説しました。今回は、その制限回避方法を使用してTODOリストのためのRESTAPIを使用していこうと思います。

前もって作成するAPIの仕様書も作りましたので、その紹介もしておきます。

API仕様書

普段であれば、APIの使用者はスプレッドシートやエクセルの形で作成しています。今回は、共有するにあたって必要となったので、WEBサイトの形式にしました。サイトのリンクはこちらです。

例としてPOSTの例を出しておきます。

API仕様書 POST

コード解説

ファイル自体は、「responseに関係する部分・パラメータ受け取りに関する部分・API処理部分」の3つパートで構成されています。「API処理部分」以外は、こちらの記事で構成について説明をしています。そのため、この章では「API処理部分」に関して重点的に紹介していきます。ソース全体に関しては、この章の最後においておきます。

こちらが「API処理部分」のコードになります。

テーブル定義

TODOリストを再現するためには、データベースが必要になります。データベースとしてGoogleSheetを利用しています。一行目をデータベースのカラム名として列をそれぞれデータとして扱っています。各カラムの扱いとしては、以下の図になります。

テーブル定義

この前提を通して、ソースの説明を行います。useTodo内にある関数と一致する形で説明していきます。

todoGet

ここでは、情報の一括取得を行っています。取得した情報はJSON形式に変換する処理を行っています。

エラー処理として、情報がなかった場合では空配列として情報を返信しています。

todoPost

ここでは、情報の追加を行っています。処理の流れとしては、シートの最終行の番号を取得し、その値に+1した行に情報を追記します。受け取る情報としては「task」のみであとはAPI側で情報を作成しています。IDは順福が生まれないようにUUIDを作成しています。createdは情報を現在時刻を取得して保存しています。

エラー処理として、「task」情報がなかった場合はエラーを返信しています。

todoPut

ここでは、情報の変更を行っています。処理の流れとしては、シート内に含まれる情報から送信されたIDと一致する情報を検索し、一致した情報を更新します。受け取る情報は「ID/task/created/state」の4つの情報です。

エラー処理として、登録されているデータがない場合と一致するIDがない場合に関してはエラーを出力します。

エラーハンドリングでは、期待する情報がない場合はエラーを出す必要がありますね。ですが、今回は、仕様書を作成した段階で考慮がなかったということでこのまま進めていきます。使用漏れですね。

todoDelete

ここでは、情報の削除を行っています。処理の流れとしては、シート内に含まれる情報から送信されたIDと一致する情報を検索し、そのインデックス番号を保存し、Sheetの行ごとデータを削除する「deleteRow」メソッドでデータを削除します。受け取る情報は、IDのみです。

エラー処理としては、登録されているデータがない場合と一致するIDがない場合に関してはエラーを出力します。

全体ソース

全体のソースです。

おわりに

お疲れ様です。今回は、計画から作成までの流れを行って、使用漏れが発覚しました。実際のプロジェクトで使用漏れが発覚するのとでは、障害の大きさが違います。ですが、使用漏れというのは簡単にシステムに入り込みます。それを体験できただけでも大きな収穫とも言えます。

本来であるならば、複数の人間を通してAPI仕様書の段階で使用漏れを除外する必要があります。

今回は、定義者・実装者すべてが僕なのでしれ~っと修正しておきます。

ではまた!!

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

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

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


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



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

Be the first to comment

Leave a Reply

Your email address will not be published.


*


質問はこちら 閉じる