キントーンで予約システム構築、予約受付と予約キャンセル
以前kintoneを使った予約システムの記事と動画を公開しました。
kintoneと連携サービスを使えば、ワクチン予約やイベント予約の仕組みをノーコードで作成可能です。
予約専用システムを使えばいいのでしょうが、ちょっとしたことで予約システム使いたい。そのシステムを自分で設定できることはいろいろとメリットになると思います。
今回は、予約受付に加えてキャンセル機能もつける方法を書いてみます。トヨクモのデータコレクトをちょっと設定するだけで、キャンセル対応も可能!!
kintone予約フォーム作成時のポイント
kintoneで予約を受け付ける方法について、さらりと書いておきます。詳細は以下のリンクをご参照ください。
- 予約枠アプリと予約受付アプリを作成する
- 予約枠アプリの情報をkViewerで公開
- kViewerとフォームブリッジを連携させて、予約枠確認→予約フォーム
- 予約登録アプリに予約が入ると、データコレクトWebhookで予約可能数に反映
ざっくりと書くと上記のような流れです。リアルタイムに予約可能数が反映される。予約ゼロになるとkViewerのレコードの絞り込み/並び替えで残り数が0になったレコードを表示しないようにしておくことで、予約枠がないのに予約できてしまうことを防ぎます。
kintoneの制限として、1日に実行できるAPIリクエスト数は1つのアプリにつき10,000件。
フォームブリッジは分間100アクセスという制限があります。
上記で紹介している内容では、予約はできてもキャンセルはできない。電話やメールで受け付けして、kintone側で編集や削除する。kViewerとフォームブリッジを連携させて、レコード毎にURLを発行するMUYPAGE機能。この機能を使えば、予約後に発行された専用URLからキャンセルは可能。
ただ、URLをブックマークしてもらうからメールで送る必要があります。なので、もう少しシンプルなキャンセル方法を検討してみました。
受付番号入力でキャンセル可能 kintone予約の仕組み
受付した時に、受付番号を発行します。ワクチンの予約であれば、接種券番号を入力する必要がありますので、接種券番号と受付番号をキーにしてキャンセル処理をします。
予約と同様、トヨクモのデータコレクトを利用します。方法は何パターンもあります。
キーとなる専用コードを作成する
- 予約枠アプリ
- 予約登録アプリ
- 予約キャンセルアプリ
予約キャンセルアプリにキャンセル情報が入ると、接種券番号をキーにして、予約登録アプリのフィールド値を変更する。例えば人数を0にするとか、0になったらIF関数でキャンセルと表示するとか。そうすることで、予約枠アプリにデータコレクトWebhookでリアルタイムな予約可能数が表示されます。
このやり方だと、1つ問題が発生します。予約して、キャンセルする。再度予約する際も利用する接種券番号は同じですよね?
再度予約を入れても、キーとなるのは同じ接種券番号です。挙動が気になる部分もありますが、接種券番号が連番とかだと、人の予約を勝手にしたりキャンセルすることも可能です。だから、接種券番号と生年月日を入れる仕組みが多いのだと思います。
方法はいろいろありますが、フォームブリッジには自動採番機能があります。予約時に受付番号を発行して、接種券番号と受付番号を文字列で結合してキーとして使う。受付番号は自動採番で発行するので、同じ人が予約キャンセルして再度予約しても別の受付番号が発行されますので、キーも前回予約時とは別のキーを利用できます。
キャンセルフォームで
- 接種券番号
- 受付番号
を入力してもらう。キャンセルアプリでも文字列結合させて、データコレクトで同じ識別コードが登録されたら処理を実行するようにすればキャンセル処理が可能です。
= SUMIF(ワクチンキャンセル!識別コード,識別コード,ワクチンキャンセル!人数)
上記の場合、2つの番号を結合させる必要があります。データコレクトはSUMIFだけでなく、SUMIFSも使えるので、今回の場合だと
= SUMIFS(ワクチンキャンセル!人数,ワクチンキャンセル!受付番号,受付番号,ワクチンキャンセル!接種券番号,接種券番号)
これで、受付番号と接種券番号が同じレコードに対して処理が可能ですね。なんてことはないんです。計算式はあっていますが、結合して重複しないキーを生成する必要はあります。
上に貼ってるのは、データコレクトの自動更新の設定の編集画面です。注意事項として
「更新対象のフィールド」と「入力元データアプリのフィールド」の値が一致した時に更新を実行します。一致するレコードがちょうど1件でないと更新は実行されません。
更新対象を通知内容と一致するレコードにした場合、このルールが適用されます。識別コードみたいな重複しないキーが必要になりますね。ちなみに、時間指定更新にした場合は絞り込み条件で指定(最大1000件まで)と更新範囲が広くなります。手動実行でも最大1000件までの更新になります。
というとで、上記の考え方で設定がちゃんとできれば予約受付とキャンセル受付が可能となり、リアルタイムな予約枠も表示できるはず・・・
他にも、予約票発行とか機能をつけた予約システム紹介動画貼っておきます