📄

スプレッドシートとAutocodeでAPIをつくる

2020/09/17に公開

Autocodeを使えば少ないプログラミングの知識でシンプルなAPIやワークフローが開発出来ます。
この製品の何がいいのかという内容はこちらが分かりやすいので読んでください。

https://autocode.com/why-autocode/

ここではスプレッドシートを用いてシンプルな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があるのでこの資料の通りに進めてください。

https://docs.autocode.com/connector-apis/building-an-api/command-line-tools/using-command-line-tools/

さて、最初の段階ではこのようなコードが書かれていると思います。

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が確認出来ます。
例えば、このようになります。

https://reiwa.api.stdlib.com/zenn-df6bbf03888344da6ac3@dev/

ネストが気に入らない場合はこのように書き換えるとシンプルになります。

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を使うことが出来ます。他にもSheetySheetDBなどの製品があります。

Discussion