職場で今後ワクチン接種の予約管理を自動化させたいという要望がありました
最近webhookを使ったリアルタイム集計がブームなkintoneで、以前試した方法があったので今回はそのアプリの作成方法をご紹介します
目次
やりたいことは自動化
予約受付の流れとしては
- 予約カレンダーから予約可能日を確認
- 予約可能日があればその日程で予約
- 予約した時点で予約可能数に反映
これをkintoneとkintone連携サービスで考えた場合
- kViewerで予約可能日をカレンダービューで表示
- kViewerとフォームブリッジを連携させ予約受付
- Webhookを利用可能なサービスでリアルタイム集計

利用サービスリンク
- kintone
- kViewer
- フォームブリッジ
- krewData
アプリ作成(今回は2つ)
今回は2つのkintoneアプリを作成します
- ワクチン接種日程表アプリ
- ワクチン接種登録アプリ
それぞれどんな機能があって、どんなkintoneアプリなのかを説明していきます
ワクチン接種日程表アプリ

配置フィールドは
- 日付(日付フィールド)
- 予約可能数(数値フィールド)
- 予約数(フィールド数)
- 予約残数(計算フィールド)
- カレンダー表示(文字列1行)
予約残数には予約可能数-予約数
この予約残数をカレンダーに表示して、どの日程が予約可能か表示したいんですが


文字列1行フィールドなら、予約タイトルフィールドに設定できるので
カレンダー表示には自動計算にして、予約残数を式に設定しました


ワクチン接種登録アプリ
次に、フォームから入力された予約内容を反映さえるアプリを作成します

配置したフィールドは
- 日付(日付フィールド)
- 氏名(文字列1行フィールド)
- 人数(数値フィールド)

人数フィールドには初期値で1を設定しています

アプリの設定は以上です
次に連携サービスの設定をしていきます
連携サービスではAPIとWebhookを設定として使います
連携サービスの設定
最初に書いた通り、今回利用する連携サービスは
- kViewer
- フォームブリッジ
- krewData(リアルタイム集計)
それぞれの設定を確認していきましょう
kViewer
kViewerでは、予約可能な日程を表示させたいのでイメージはこんな感じ

kViewerに関しては別のブログをご参照ください(kViewer記事)
設定ポイント①予約数が0になったら予約できなくする
これを実現するためには、予約数が0になった時点でkViewerにレコードを表示しないようにすればOKです

設定ポイント②kViewerとフォームブリッジを連携させる
kViewerで表示させたカレンダーにから予約フォームを起動させるのがスムーズなので、両サービスを連携させます
この後作成するフォームブリッジのURLをkViewerで設定しますので、まずはフォームブリッジを作っていきます
フォームブリッジ
フォームブリッジも細かな設定や活用事例は別記事を参考に(フォームブリッジ記事)

ちょっとややこしいですが、設定ポイント!!
設定ポイント①フォームブリッジで設定するアプリはワクチン接種日程表

そう思う人が多いかもしれません
今回、kViewerでワクチン接種日程表の情報を確認します。そしてフォームブリッジに連携しますよね?
連携のメリットとしてはkViewerで表示した情報をフォームブリッジのフォームに引き継げる点や、フォームブリッジで引き継いだ内容を修正するとkintoneの内容にも反映してくれる点です
ただ、今回の場合はその機能が裏目に出てしまいます
kViewerで日付のデータをもってフォームブリッジから予約するので、日付のフィールドには既に値が入っています。そして、氏名を入力すると既に入力された同日のレコードの氏名を上書き保存してしまう・・・
解決方法としては、まず回答後の自動処理で2つのアプリに回答データを保存するように設定します。

こうすることで、次に行うフィールドの設定でkintoneアプリからフィールドを同期すると2つのアプリが設定可能となります


そして、ワクチン接種日程表アプリとは同期せず、ワクチン接種登録アプリと同期させます
こうすることで、ワクチン接種日程表アプリの日付情報を引用しつつ予約内容の保存はワクチン接種登録アプリに行う
今回の内容に類似する記事がトヨクモ公式にアップされたいたので、そちらもご参考に
そして、今回作成したフォームをkViewerと連携させます


今のままであれば、予約残数は自動計算されないので手動で日別予約数を入力する必要があります
リアルタイム集計可能な連携サービスで思いつくのが
- データコレクト
- Customine
- krewData
今回はリアルタイム集計のフロー枠が1つ空いていたkrewDataを紹介します
krewDataリアルタイム集計
krewDataの記事は・・・書いてなかったかもしれないw
細かな設定は公式をご参考に・・・(krewDataリアルタイム実行)
プラグインやフローの設定をご紹介します。最終的にこんな感じになればリアルタイム実行が成功しています

まずは、実行単位を設定します。呼び出し元アプリにはワクチン接種登録アプリを設定。これはフォームブリッジから予約内容が追加された時点で再集計をkrewDataで行いたいのでこちらのアプリを選択しています。
今回はwebhookを用いました。URLの部分に設定に必要なURLが表示されますので、こちらのコピーしてワクチン接種登録アプリのwebhookに設定します


通知を送信する条件は、運用におって様々だと思います。今回はレコード追加とレコードの削除を条件に設定しています。
そして、リアルタイム実行にはログ出力先のアプリを作成する必要があるのですが、こちらはkrewDataの機能を使って設定が可能です。

krewDataフロー作成
さて、これでゴール
データ編集フローを作っていきましょう。フローも至ってシンプル

入力アプリはワクチン接種登録アプリに設定し、フィールドは日付と人数にしておきます
このままだと同日に何件予約が入っているのか分からないので、グループ化を行います
プレビューの内容を見ると、日別に集計がされていますね。あとはこの情報をワクチン接種日程表にセットするだけなので、出力アプリを設定します。

日付を更新キーに設定しているので、予約された内容に該当する日付のレコードに最新の集計結果が反映されるというわけですね
イメージ(kViewer)
イメージ
色々活用可能だと個人的に考えている

どんどん活用することで、集計が楽になると多いませんか?
集計に頑張る必要はないと思いますし、自動化できる部分は自動化したらいいと思います
今回は公開していますが、予約カレンダーも予約フォームもパスワードやIPで制限することで社内や院内、施設内だけのアクセスにすることも可能です
一人でもこの情報が役立つことを願っております