見出し画像

【AppSheet】酒気帯び確認記録簿は自作アプリで!

法令で面倒な業務が増える!?

私の所属する組織で「酒気帯びの有無の確認及び記録の保存」が求められています。手書きの形式で!
面倒すぎるので最近勉強しているAppSheetを使ってチョチョイっとアプリを作って課長に運用について管理部門に確認をしてもらうことにしました!

記録する内容は下記の通りで1年間保存することとなっています。

  • 確認者名

  • 運転者

  • 自動車登録番号(ナンバー)

  • 確認の日時

  • 確認の方法(アルコール検知器の使用の有無・対面でない場合は具体的方法)

  • 酒気帯びの有無

  • 指示事項

  • その他必要な事項

職場で毎日出歩く人が多い部署でこんなの出退勤時に毎回手書きさせてたら大変すぎて禿げちゃいますよw

村は特に移動が多いので出来るだけ法令順守をしつつ、利用者の負担を軽減できるようなものを開発していけたらなと思い作ってみました!

アプリ作成手順

データベースの作成

データベース

まずはデータベースとしてGoogleスプレッドシートに記録したい情報を項目として列挙します。

Log ID
氏名
出勤Date/Time In
検知器の有無 In
確認方法 In
酒気帯びの有無 In
指示事項等 In
確認者名 In
退勤Date/Time Out
検知器の有無 Out
確認方法 Out
酒気帯びの有無 Out
指示事項等 Out
確認者名 Out
数値

私のアプリは記録形式を合わせるようにと言われる可能性があったのでここまで重複した書き方をしていますが、合わせなくてもいいのであれば
退勤Date/Time Out
検知器の有無 Out
確認方法 Out
酒気帯びの有無 Out
指示事項等 Out
確認者名 Out
は不要です。

※シートが見づらくなるので管理部門からOKが出れば統一していく方針です。
※運用がOK出ない可能性もあるためかなり間に合わせの力技で作成していますがOKが出たら直せばいいアジャイル開発をしています。

AppSheetを作成

AppSheetを利用している場合、スプレッドシートに拡張機能が出てきます。
「アプリを作成」を押すとデータベースを連動したアプリを作成してくれます。
データの流れややりたいことがかなり簡単なので一画面でデータセットが完了してしまいます。

AppSheetのData画面

Log ID
氏名
出勤/退勤
Date/Time
検知器の有無
確認方法
酒気帯びの有無
指示事項等
確認者名
数値

の形式ですが、出来るだけ手で入力する部分を減らしていきたいので決まっているものに関してはTYPEはEnumで作成します。(Enumlist型は複数選択できるため今回は不使用。)

各項目の説明

Log ID
タイムログのキー値。一項目につき割り当てられるランダムな文字列。
INITIAL VALUE(初期値)に関数「UNIQUEID()」を入れています。

氏名
職員の名前を記載しています。
変動が少ないためEnumで選択する形式にしています。

出勤/退勤
出勤時と退勤時に計測が必要とのことで区分が分かるようにしました。

Date/Time
いちいち記載する必要が無いのでINITIAL VALUE(初期値)に関数「Now()」を入れています。特別な事情でもし手入力したい場合は後からスプレッドシートをいじれば変更も可能です。

検知器の有無
こちらはEnumで選択する形式です。職場には検知器があるため「有」の選択肢だけでもいいのですが、出先などで電話確認を行う際など特別な事情がある可能性も考えて「有」「無」の選択肢を用意。

確認方法
確認方法は「対面」「電話」「その他」の三つからEnumで選択する形式にしており、「その他」の場合は指示事項等の項目に記載すれば運用上は問題が無いかなと思います。

酒気帯びの有無
こちらでは「有」「無」の項目を用意して、もし「有」が選択された際には数値の項目が出現するような形にしております。

指示事項等
こちらはTEXT形式で自由に記述が出来るようにしております。

確認者名
確認者名はあえてTEXT形式にしていますが、厳格なルール運用をしていくのであればワークフローシステムを組まねばなりません。

数値
アルコール度数が検知された場合に入力をすることができます。
こちらもnumber形式でなくTEXT形式にしておりますがこれは、多少の表記ゆれは許容して記入時のミスによるストレスを削減することが理由です。

ちなみに数値は表示するか否かに条件分岐の関数「or([酒気帯びの有無]="有"」を入力して分岐表示させています。

画像は2つの可能性の条件があるためOR関数を使っていますが1つの条件のみであれば「[酒気帯びの有無]="有"」のみで対応可能。

データベース整理

このままでは入力された値が列挙されて提出時に提出者が行う業務が煩雑になっているためスプレッドシート側でデータの整理をしていきます。

主に使用するのはFILTER関数です。

出退勤統合前の画面
=FILTER(Timesheet!1:991,Timesheet!B:B=B1)

こちらのFILTER関数で別シートにあるすべての範囲から私の名前が書いてあるものだけを抽出した形になります。

ですがこの記事を書いている間にも更新をかけ続け、やはりアプリ上で出勤退勤を別で保存するのは都合が悪いのでスプレッドシートの方で加工した方が良いですね!

加工しなおしたものがこちら。

開発中の画面なのでかなり試行錯誤が見えるPrtScなので恥ずかしいですがw

ここからFILTER関数でズバッと加工します。
それぞれの職員のシートを作成してちょこっとずつ関数をいじります。
また、出退勤が1行だとわかりづらいため出勤と退勤は二段組の形に改編!

出来たのがこちら

3行目A列とK列に下記の関数を入れています。

A列
=FILTER(Timesheet!A1:J989,(Timesheet!$B:$B=$B$1)*(Timesheet!$C:$C=$C$2))

K列
=FILTER(Timesheet!C1:J989,(Timesheet!$B:$B=$B$1)*(Timesheet!$C:$C=$K$2))

見かけがかなりシンプルで管理しやすくなったと思います!
条件付き書式で酒気帯びの有無が「有」の場合のみ色を付けるなどすることも可能ですね!

まとめ

今回のこのアプリはおよそ3時間ほどで完成しました!
マイナーアップデートも毎回30分ほどしか掛からないため
やはりこういったライトなアプリはアジャイル開発が適しているなと感じました。

あと残る問題は管理部局が首を縦に振るか否かです。。。

この記事が気に入ったらサポートをしてみませんか?