Node-RED の AirTable ノードを使ってみるメモ

Node-RED の AirTable ノードを使ってみるメモです。この記事は 2021年 ゆるくすすめる ( ワンフットシーバス ) GWアドベントカレンダー の5日目の記事でもあります。

最近、タスク管理を見直していた

最近、タスク管理を見直したくて、いろいろとデータベース的なものを調べていたんですが、そちらのほうは Todoist からはじまり Asana ・ Trello ・ kintone ・ Backlog と試したものの、いろいろ用途を考えた結果、結局 Todoist に戻ってきました。もうちょっと良いユースケースを考えられそう。

ちなみに、どれもいいところはあり、試してて楽しかったです。ちなみに Trello については Slack 連携が、現状の私の仕事のパターンによっては合っているので、別途導入を試しています。Notion もデータベースにいろいろ突っ込める点で、使いどころはある気がするので、また試してみたい。

そこで副産物的に AirTable を知る

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 と言います。で、その中にテーブルをたくさん作る感じ。

Pricing – Airtable

を見ていただくとわかるのですが API の利用については Free 版でも特に制約なく使えてすてきです。2021/5 現在では、 Free 版でも 1,200 records per base で、Base 自体は作り放題なので、ある程度のデータ量であれば使えます。ちなみに、私の場合は、すぐに使えるなと思ったので、アップグレードしてしまいました。

image

アカウントを登録して、 Start from scratch で、ひとまずテンプレートは使わず、シンプルなテーブルではじめます。

image

Untitle Base ができるので、Table 1 を見ます。Name ・ Notes ・ Attachments ・ Status という列ができています。

image

あとでデータを取り出すので Name と Notes にデータを入れておきます。

自分の API key を取得

image

アカウントページで API の欄にあるこちらをクリックして API key をメモしておきます。後で使います。

今回の Base の ID を取得する

image

アカウントにログインした状態で REST API というページに行くと、いま使用している Base の一覧があります。

image

各 Base でどうやって API を使うかのサンプルがあって、すごく親切です。ちょうどこのあたりに ID があるのでメモしておきます。後で使います。

Node-RED に AirTable ノードをインストール

image

まず、Node-RED に AirTable ノードをインストールします。node-red-contrib-viseo-airtable と node-red-contrib-airtable がありますが、 node-red-contrib-airtable をインストールします。

Node-RED で AirTable ノードの設定

AirTable ノードの設定です。メモした自分の API key と 今回の Base の ID を用意しておきましょう。

image

このようなフローを作ります。

image

airtable out をダブルクリックして、設定を表示します。Set API Key で 新規に airtable を追加します。

image

メモした自分の API key と 今回の Base の ID を設定して追加します。

Node-RED で AirTable からデータ取得してみる

Set API Key の追加ができたらプロパティに戻ります。

image

テーブル名は今回取得したいテーブル名 Table 1 を記入します。

Operation は、データを取得するので select にします。これで設定は完了です。

inject ノードの payload で値を設定

データを取得するために設定を行います。

image

使い方はノードの説明に詳しく書いています。

image

select についても命令の作り方が書いています。

image

ということで、今回は {"fields": ["Name", "Notes"]} と設定して Name ・ Notes のフィールドを取得するように設定します。

image

詳しい命令の作り方は REST API の各 Base のドキュメントの List records あたりの設定を参考にするとよいでしょう。かなり色々な設定ができます。特に filterByFormula が強力。

動かしてみる

image

出来上がったら inject ノードをクリックしてみましょう。

image

うまく設定ができていれば、1行ごとデータが取得できます、このようにデバッグタブでデータが確認できます。分かりやすいですね!

いつも、テキストファイルやJSONファイルでサッとデータを貯めるか、あとで検索するのでデータベースでも貯めるか、でもいずれデータ眺めたいから GUI もほしいしな、と悩みながら自分のツールを作っているので、こういったサービスはとても助けになります。

Node-RED を含めていろいろ使ってみます!