予約管理もAirtableでやりたい
こんな要望もよく聞きます。予約管理アプリなんかWeb上にたくさんあるでしょ?と最初そう思って色々試してみたんですが帯に短し襷に長し、以下のような理由でピッタリのものがありません。
- 一概に予約と言っても様々な形態が存在する
- 人の枠予約: レッスン、サロンなど
- 施設や物品の枠予約: 結婚式、民泊、シェアサイクルなど
- 待ち行列: 医院、飲食店など
- 購入予約: チケット、書籍など
- 決済のタイミングも色々ある
- 予約の都度決済するタイプ(キャンセル時は返金する)
- 事前にチケットを購入して消費するタイプ(しかも予約時は消費されずサービスを受けたら消費する)
- 事前にチケットを購入するが診察するまで消費金額がわからないタイプ
- 予約時に決済は関係ないタイプ
- 予約状況をどこまで公開するか?(競合他社の目を気にする)
- 全て公開
- 埋まり具合は全て公開
- 会員登録を設けて会員には全て公開
- 誰が予約できるか?(競合他社の妨害予約を気にする)
- 会員登録を設けて会員のみ予約できる
- 誰でも予約できる
見てお解りの通り待ち行列や購入予約は単純なのでパッケージアプリ化しやすいですが、人や施設のスケジュール枠予約は上記の条件の組み合わせが多岐にわたり急に難易度が上がります。
今回はAirtableで人のスケジュール枠予約の管理を行う話です。
予約画面
まず、予約画面。
この予約画面は勤怠管理編の打刻画面と同じようにNode-REDで開発してます。事前にAirtableに登録されている予約枠データを取得してリスト表示し、ユーザーがリストから予約すると予約テーブルにレコードを追加します。
チケットの購入
ユーザーは予約時にチケットが不足している場合はShopifyでチケット購入をしてもらいます。Shopifyは購入時のWebhookを設定できますので、Shopifyの購入データをAirtableに登録する以下のNode-REDフローをenebularのクラウド実行環境で動かしています。
これだけのデータをAirtableに入れてしまえば以下のことはAirtableで実現できます。
- 予約の閲覧と調整(こんなのAirtable標準のカレンダーViewで1発です!)
- 予約枠の閲覧と調整(インターナルの調整なのでAirtable標準のカレンダーViewで関係者全員で調整)
- チケット枚数の管理(Shopifyから投入されるデータを数式で積算するだけ)
- 予約件数に応じてチケット仮消費(数式でenebular/Node-REDから投入される予約データの積算から残チケット枚数を計算)
- 出席チェックボックスでチケット消費(予約データで出席項目にチェックの入ったデータのみ積算して残チケット枚数を計算)
以上のように柔軟にカスタマイズできますのでスケジュール枠予約管理のような複雑なシステムに向いています。