Google Apps Scriptで健診予約管理を作ってみた【GAS】

企業によって健康診断の実施時期は異なりますが、どの企業でも総務課が予約を取るのは一苦労な場面があります。所属支店内に於いて様々な部署やメンバーの為に枠を取り、それぞれから希望日を効いて、枠が溢れてしまったら、別の日程に変更を促し、再度取得。最後に健診センターに予約を入れるなどなど。

特に総務の指示に従わず、予約取らないものや、希望日が偏って集中しなんども申込者と日程変更のやり取りをするのは不毛な時間です。そこで、メンバー一覧と枠一覧を用意し、ウェブアプリケーション上で予約を先着順で取って貰えれば、これらの手間のほとんどが不要になります。今回はそんな健診管理システムの簡易版を作ってみました。

今回使用するスプレッドシート

2つのシートがあり、また他の人の予定を探られないように、各人には記号を渡しておき、その記号を持って処理をすすめる方式です。誰がどの記号なのかは、管理者が別途管理する必要があります。

使い方

このアプリは初期セットアップをしなければ利用ができません。手順は簡単で以下の通りです。

  1. スプレッドシートメニューにある「▶セットアップ」を開く
  2. 初期化を実行すると、スプレッドシートのIDがスクリプトプロパティに格納されます。
  3. 送信先を実行すると、管理者向け自動応答メールの送信先のメアド指定がでるので、セットする。
  4. 健診枠シートの残り枠数列以外に、今回取得した健診枠のデータを記述しておく。
  5. 希望日シート記号性別フラグ(0=男、1=女)で人数分用意する。メアドや個人情報は記載しない。
  6. このセットアップが終わったら、ウェブアプリケーションとして公開し、メンバーにはそれぞれ該当の記号を個別にお知らせしてあげる。

図:非常にシンプルな予約画面です。

※現在社内ではこれをElectronで作成し、オプション健診予約や年齢による強制受信のオンオフなど様々な機能を追加しています。

ソースコード

HTML側コード

  • 今回はモバイルデバイス対応の為に、Booststrapおよびviewport設定を使っています。
  • 性別によって、列挙する健診枠を変更しています。
  • また、枠が埋まっているものについては、一覧表示させず、予約時にも残枠数チェックを入れるようにしています。
  • 主な機能は、記号の認証と健診枠表示、予約登録の3種類のみです。

GAS側コード

  • 予約のルーチンは、バッティング防止の為に排他制御を利用しています。
  • 記号の認証探索と予約のルーチンの2つがメイン機能です。

カレンダーに登録してもらう

フォーム送信完了と共に、そのままGoogle Calenderへ連続登録も良いのですが、登録するかしないかはユーザに選択の余地があったほうが良いこともあります。また、健診だと個人のカレンダーアプリに登録する人もいるでしょう。
そういった人たちに、手軽に健診予約情報を登録してもらうには、URLを叩くと登録画面が出るようにするとGoodです。今回のサンプルには搭載していませんが、以下のようなURLを生成し、メールで送ってあげると、丁寧ですね。予め対象のカレンダーにログインしてある必要があります。

Google Calenderへ登録する

Google Calenderへイベント登録するURLの構成は以下のような感じになります。

Calenderに登録時に注意すべきは、日付です。textはタイトル、detailsが本文、Locationが住所で、これらは素直につなげれば良いですが、日付だけはそのままの状態では登録できません。
また、健診なので時間の設定も必要です。この時間は13:00に健診予定がある時は、+9:00した時間でなければなりません。また、日付形式もUTCの形式でと整えて開始時間と終了時間それぞれをスラッシュでつなげたものを必要とします。
上記の事例でsと、2020年2月7日13:30~15:30の予定となっているのですが、datesより後ろはなんだか時間が変。しかしこれで正しいのです。元の時間に+9:00でUTC形式にするとこのような日付になります.

Outlookへ登録する

outlookの場合は割と素直なURLで構築が可能です。

startdtが開始時間、enddtが終了時間、subjectがタイトルで、bodyが本文、Locationが住所になります。+9:00する時点は同じですが、UTCに変換は不要です。

2020年12月1日現在、+9:00を付与してると正しい日時登録がなされなくなり、これを外してあげるとうまく動作したので、UTC変換は勝手にやってくれてるようなので、正しい日時が新規画面に入らない場合には、T12:00:00+09:00といった表記は、+09:00は削ったほうが良いです。

関連リンク

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)