はじめに
これはバックエンドの知識がない自分がFirestore+GoogleAppsScriptで簡易DBを構築した話の前段階の話です。
結論から言うと
- スプレッドシートとGoogleAppsScriptを使って簡易API作った!
- 動作速度が遅くて没にした
- 個人利用やテストデータを試すには十分使えると思うよ!
概要
GoogleAppsScript(GAS)には、作成したスクリプトを「Webアプリケーションとして導入」するという機能があります。
これを使うと、自分でサーバーを立てたりする事なく超簡単にAPIを公開できます。
今回はGETリクエストが来たらスプレッドシートのデータを取得し、JSONで返すというAPIを作る事で、スプレッドシート上でDB管理のような事をできないか?と考えて実装しました。
実装方法
「スプレッドシート上のデータを取得する処理を書く」
までは前回と同じなので省略します。前回の記事↑を参照ください。
GETリクエストをGASで受け取る処理を実装する
GASにはdoGet
というfunctionが用意されており、これを実装する事でGETリクエストを受け取った時の処理を記述することができます。(POSTリクエストはdoPost
)
詳しくは公式を確認してください。
今回はGETリクエストを受け取った時にシートの値をJSONとして返します。
function doGet(e){
// シートの値を取得
var json = getSheetValue(sheet);
var out = ContentService.createTextOutput();
// MimeTypeをJSONに設定
out.setMimeType(ContentService.MimeType.JSON);
// JSONテキストをセット
out.setContent(JSON.stringify(json));
return out;
}
たったこれだけです。
これをAPIとして公開します。
作成したスクリプトを公開する
GASの[公開] > [ウェブアプリケーションとして導入]を選択します。
すると下記のようなウィンドウが出ると思います。
Project version:
はNew
を選びます。(ここでバージョン管理もできます)
一番下のWho has access to the app:
をAnyone, even Anonymous(全員(匿名ユーザを含む))
に変更し、Deployを選択します。
上記のようなウィンドウが出たら、公開完了です。
テキストボックスに表示されている
https://script.google.com/macros/s/{xxxx}/exec
がAPIのURLになりますので、ブラウザでアクセスしてみます。
このようにJSONが表示されていれば成功です。
超簡単にAPIが作成できました!
問題点
このAPIにも問題点があり、それは動作速度が遅いことです。
私のアプリでは数件のデータにもかかわらず取得に2秒弱かかり、これは使えないという事で約30分で実装したものを約30秒で没にしました。実装も爆速なら没までのスピードも爆速です。
ただ、自分の使い方には合っていなかったというだけで、個人で試しに使ってみるには十分有用だと思います。