Node-RED の AirTable ノードを使ってみるメモです。この記事は 2021年 ゆるくすすめる ( ワンフットシーバス ) GWアドベントカレンダー の5日目の記事でもあります。
最近、タスク管理を見直していた
最近、タスク管理を見直したくて、いろいろとデータベース的なものを調べていたんですが、そちらのほうは Todoist からはじまり Asana ・ Trello ・ kintone ・ Backlog と試したものの、いろいろ用途を考えた結果、結局 Todoist に戻ってきました。もうちょっと良いユースケースを考えられそう。
ちなみに、どれもいいところはあり、試してて楽しかったです。ちなみに Trello については Slack 連携が、現状の私の仕事のパターンによっては合っているので、別途導入を試しています。Notion もデータベースにいろいろ突っ込める点で、使いどころはある気がするので、また試してみたい。
そこで副産物的に AirTable を知る
さて。 AirTable も実は上記の流れで探してたんですが、こちらは柔軟にデータベースが組むことができ、Google スプレッドシートのように GUI も扱いやすく、何より API が使いやすく 公式の Node.js ライブラリ もあって、なんというかフロントエンドとバックエンドが均等に扱いやすい WEB サービスということに気づきました。面白い。
Node-RED ノードもある
node-red-contrib-airtable (node) – Node-RED
そして、Node-RED ノードもありました。なんと、UGメンバーでもある古城さんが作っているのでホッとしますし、公式の Node.js ライブラリ をうまくラップしているので使いやすそう。
詳しい使い方は、ノードの説明ページを見てもらうとして使ってみます。
まず Base を作る
AirTable では、Google スプレッドシートのようなデータの塊を Base と言います。で、その中にテーブルをたくさん作る感じ。
を見ていただくとわかるのですが API の利用については Free 版でも特に制約なく使えてすてきです。2021/5 現在では、 Free 版でも 1,200 records per base で、Base 自体は作り放題なので、ある程度のデータ量であれば使えます。ちなみに、私の場合は、すぐに使えるなと思ったので、アップグレードしてしまいました。
アカウントを登録して、 Start from scratch で、ひとまずテンプレートは使わず、シンプルなテーブルではじめます。
Untitle Base ができるので、Table 1 を見ます。Name ・ Notes ・ Attachments ・ Status という列ができています。
あとでデータを取り出すので Name と Notes にデータを入れておきます。
自分の API key を取得
アカウントページで API の欄にあるこちらをクリックして API key をメモしておきます。後で使います。
今回の Base の ID を取得する
アカウントにログインした状態で REST API というページに行くと、いま使用している Base の一覧があります。
各 Base でどうやって API を使うかのサンプルがあって、すごく親切です。ちょうどこのあたりに ID があるのでメモしておきます。後で使います。
Node-RED に AirTable ノードをインストール
まず、Node-RED に AirTable ノードをインストールします。node-red-contrib-viseo-airtable と node-red-contrib-airtable がありますが、 node-red-contrib-airtable をインストールします。
Node-RED で AirTable ノードの設定
AirTable ノードの設定です。メモした自分の API key と 今回の Base の ID を用意しておきましょう。
このようなフローを作ります。
airtable out をダブルクリックして、設定を表示します。Set API Key で 新規に airtable を追加します。
メモした自分の API key と 今回の Base の ID を設定して追加します。
Node-RED で AirTable からデータ取得してみる
Set API Key の追加ができたらプロパティに戻ります。
テーブル名は今回取得したいテーブル名 Table 1
を記入します。
Operation は、データを取得するので select にします。これで設定は完了です。
inject ノードの payload で値を設定
データを取得するために設定を行います。
使い方はノードの説明に詳しく書いています。
select についても命令の作り方が書いています。
ということで、今回は {"fields": ["Name", "Notes"]}
と設定して Name ・ Notes のフィールドを取得するように設定します。
詳しい命令の作り方は REST API の各 Base のドキュメントの List records あたりの設定を参考にするとよいでしょう。かなり色々な設定ができます。特に filterByFormula が強力。
動かしてみる
出来上がったら inject ノードをクリックしてみましょう。
うまく設定ができていれば、1行ごとデータが取得できます、このようにデバッグタブでデータが確認できます。分かりやすいですね!
いつも、テキストファイルやJSONファイルでサッとデータを貯めるか、あとで検索するのでデータベースでも貯めるか、でもいずれデータ眺めたいから GUI もほしいしな、と悩みながら自分のツールを作っているので、こういったサービスはとても助けになります。
Node-RED を含めていろいろ使ってみます!