スプレッドシートとAutocodeでAPIをつくる
Autocodeを使えば少ないプログラミングの知識でシンプルなAPIやワークフローが開発出来ます。
この製品の何がいいのかという内容はこちらが分かりやすいので読んでください。
ここではスプレッドシートを用いてシンプルなAPIを公開する方法を説明します。
スプレッドシートをつくる
最初にAPIで公開するデータのスプレッドシートを作ります。
このように作りました。
Album | Music |
---|---|
フェイクワールドワンダーランド | クロノスタシス |
猫とアレルギー | 桜が咲く前に |
eureka | 国道スロープ |
eureka | 風化する教室 |
渦になる | スクールフィクション |
フェイクワールドワンダーランド | You outside my window |
プロジェクトをつくる
名前を決めて新しいプロジェクトを作成します。
名前以外にいくつか項目があるので次のように選択してください。
- What kind of API are you building? → Web Project
- Choose an Event to Trigger your First Endpoint → Custom Webhook
プロジェクトが作成されるとこのような画面に遷移します。
ちなみにこのエディタを使用したくない人は、CLIがあるのでこの資料の通りに進めてください。
さて、最初の段階ではこのようなコードが書かれていると思います。
const lib = require('lib')({token: process.env.STDLIB_SECRET_TOKEN});
/**
* An HTTP endpoint that acts as a webhook for HTTP(S) request event
* @returns {object} result Your return value
*/
module.exports = async () => {
let result = {};
return result;
};
右下の「Run Test Event」をクリックすることで実行できます。
実行結果は右の部分に表示されます。
分かると思いますが、この状態では{}
が返却されます。
このコードの真ん中の空いてる部分でスプレッドシートからデータを取得し、加工して最後にreturn
することになります。
スプレッドシートからデータを取得する
右上の「Code Generator」をクリックしてコードを生成します。
すると上に「Which API to call?」と表示されるので次のように選択してください。
- Which API to call? → Google Sheets
- Sekect action → Select Rows from a Spreadsheet by querying it like a Database
このような画面が表示されると思います。されなかったらごめんなさい。
この時、右下のボタン「1 Account Required」が赤くなっていることに気付くと思います。
クリックしてスプレッドシートとAutocodeを関連付けする必要があります。
「Link」をクリックして先ほど作成したシートと関連付けしてください。「Finish Link Spreadsheet」をクリックして作業を完了します。
戻ってgooglesheets.queryの項目を埋めます。
このように入力します。
項目 | 値 |
---|---|
range | A:B |
bounds | FIRST_EMPTY_ROW |
where, key | Album |
where, Select an operation... | is equeal to |
where, value |
空白の「spreadsheetId」は今回は必要はありません。
全ての項目の入力が終わったら右下のボタン「Run Test Event」をクリックして結果が正しく表示されることを確認します。
このような結果が得られます。
{
"googlesheets": {
"selectQueryResult": {
"spreadsheetId": "1CQYszANC-hKhhAN37f2QJ3b_07cJ1N2h_PJMYCloAbA",
"range": "Musics!A1:B1000",
"rows": [
{
"index": 4,
"fields": {
"Album": "eureka",
"Music": "国道スロープ"
}
},
{
"index": 5,
"fields": {
"Album": "eureka",
"Music": "風化する教室"
}
}
]
}
}
}
デプロイする
左下の橙色のボタン「Save Endpoint」をクリックして編集を保存します。
最後に、左下の青色の「Deploy」がクリックしてDEV環境にデプロイします。
下に「Deploy URL」が表示されていると思うのでこちらからDEV環境のAPIが確認出来ます。
例えば、このようになります。
ネストが気に入らない場合はこのように書き換えるとシンプルになります。
module.exports = async () => {
const select = await lib.googlesheets.query['@0.3.0'].select({
range: `A:B`,
bounds: 'FIRST_EMPTY_ROW',
where: [
{
'Album__is': `eureka`
}
],
limit: {
'count': 0,
'offset': 0
}
});
return{ records: select.rows };
};
さいごに
シンプルなAPIであれば数分で作れます。特にプロトタイピングではとても役に立ちます。
また、単にスプレッドシートシートをデータベースとして使用したい場合はNoCodeAPIを使うことが出来ます。他にもSheetyやSheetDBなどの製品があります。
Discussion