クラウド実行環境で動作する HTML フォームから内容を Airtable に記録する

今回は、以前作った、enebular クラウド実行環境で動作する HTML フォームに、投稿内容を Airtable に記録する機能が加わったフローを体験してみましょう。

Airtable の Base の準備

Base を新しく作成して Base の名前は Simple Form Data にします。

image

初期に作成されるデータやフィールドを削除して、以下のようにフィールドを設定します。

  • 1番目のフィールド
    • フィールド名: Name
    • フィールドタイプ: Single line text
  • 2番目のフィールド
    • フィールド名: Publish
    • フィールドタイプ: Single line text
  • 3番目のフィールド
    • フィールド名: Condition
    • フィールドタイプ: Single line text
  • 4 番目のフィールド
    • フィールド名: Comment
    • フィールドタイプ: Single line text
image

今回のテーブル名は Table 1 にします。

Base Id を把握

image

Introduction – Airtable Web API にアクセスします。

image

自分の作成済み Base のリストが並んでいるので、今回の Simple Form Data をクリックして設定を確認します。

image

Simple Form Data の Base ID がこちらに書かれているのでメモしておきます。

Airtable の API キーを準備

2023 / 1 時点で Airtable Developers が、新しい API 系の管理画面です。

image

この管理画面はユーザーに紐づいています。

image

Create token ボタンをクリックします。

image

token の名前や scope や利用可能な Base を決めます。

image

Name は formtest にしました。

image

このトークンの権限を決める Scopes は今回は読み書きするということで Add a scope をクリックして data.records:readdata.records:write を加えました。

image

どの Base にアクセスできるかを決める Access の項目は、 Sample Form Data のみ設定しました。

image

設定できたら Create token ボタンをクリックします。

image

すると、1 度限りしか出てこないダイアログによってトークンが把握できます。閉じてしまうと、もう見られないので注意しましょう。

これをコピーしてメモを保管しておけば新しいトークン作成完了です。

クラウド実行環境の準備

以前の記事「新リリースのenebularクラウド実行環境の使い方」の「クラウド実行環境の準備」を参考にクラウド実行環境を準備します。

HTTP トリガー設定

image

以前の記事「クラウド実行環境での HTTP トリガーに設定する重複しない URL をつくる TIPS 」を参考にHTTP トリガーを設定します。

Discover Flow からフローをインポート

image

今回のフローはこちらです。 → lcdp-simple-form-airtable

こちらをインポートボタンをクリックしてして、対象のプロジェクトを選択してインポートします。

image

インポートできたらエディタで開いてみます。

Airtable API キーの設定

image

airtable out ノードをダブルクリックしてプロパティを表示します。

image

Set API Key が My Airtable API が選択されていることを確認してimage ボタンをクリックします。

image

API Key は、先ほどのメモした API トークンを入力します。 Base Id も先ほどメモした Base ID を入力します。

更新ボタンをクリックして、airtable out ノードのプロパティに戻ったら完了をクリックします。

image

右上の保存ボタンをクリックして、フローをデプロイします。

フローの仕組み

image

フォームの仕組み自体は 以前の記事「enebular クラウド実行環境で動作するシンプルなフォームの仕組みを作成してみる」で、仕組みを紹介しているので参考にしてください。

image

今回は、このフォームの仕組みに加えた、フォームからの投稿内容を Airtable に記録する部分と、その上で HTML で返信する部分のポイントをお伝えします。

image

まず、フォームからの投稿内容を Airtable に記録する部分です。

image

Airtable 用調整という名前の change ノードの中身を見てみましょう。

image

こちらは、このあとの Airtable でのデータ作成するノードに対して、フォームのデータから Airtable 用のデータを整えています。

image

つづいて、airtable という名前の Airtable ノードの中身を見てみましょう。

image

こちらは Airtable へのデータ作成を行っていて、テーブル名のところで実際の Base にあるテーブル名「Table 1」や、Operation で create となっていてデータ作成を設定してます。Set API Key の中は、先ほど対応した API Key まわりの設定をしています。

image

そしてこちららが HTML で返信する部分です。従来のフォーム返信の仕組みをそのまま使っているのですが、大事なポイントがあります。

image

このように HTML を返信する流れを Airtable の仕組みよりも最後になるよう「直列つなぎ」にしておくことが大事です。

image

というのも enebular の場合は自由にデータの流れるので、上記の画像のように「並列つなぎ」で2 つの処理を同時に行うこともできます。ですが、この流れにしてしまうと HTML を返答する LCDP out ノードに到達して HTML を表示してしまうとクラウド実行環境が早々に終了してしまって Airtable への保存が終わらなくなってしまいます。

HTML を返信する流れを Airtable の仕組みよりも最後になるよう「直列つなぎ」にしておけば、Airtable への保存が成功した後に HTML が返答されるので、クラウド実行環境がイメージ通りに動作します。

フローのデプロイ

ということで、フローをクラウド実行環境に反映します。

以前の記事「新リリースのenebularクラウド実行環境の使い方」の「フローのデプロイ方法」を参考にクラウド実行環境へのフローのデプロイを行います。

HTTP トリガー URL 確認

準備ができたら HTTP トリガーの URL にアクセスしてみましょう。

image

このようにフォームが表示されます。

動作確認

シンプルにフォームの表示とフォームデータの受信を行ってみましょう。

image

フォームのお名前・コメント・体調・公開の項目を、試しにこんな形で入力して送信するボタンをクリックします。

image

URL が 現在のHTTP トリガーURL/post に遷移してします。

image

フォームデータを受信した画面が表示されて、先ほど設定したお名前・コメント・体調・公開についてのデータが表示されています。

image

そして Airtable にも無事保存されました。

クラウド実行環境の仕組みだけで、シンプルにフォームの表示とフォームデータの受信ができましたが、今回さらに Airtable を組み合わせて外部にデータが保存される仕組みができました。ここまでできると、実際にアンケートを作りユーザーに入力させたり、何かしらの入力業務を効率化する仕組みにつなげられるので、ぜひ試してみてください!