こんにちは、門田です。
今日は少し涼しくなってきましたね。久しぶりにクーラーを使わずに過ごせそうです。
では本日もkintoneを使っていきます。
本日の指令
タイムカードアプリを作成すること
ただアプリを作成するのであればそれほど難しいことではないのですが、そんなに簡単な指令なわけはなく、しっかり条件がついていました。(笑)
・計算フィールドを用いて、出勤時間・退勤時間を入力すると勤務時間を自動で計算するように設定する。
・休憩がある日もない日も使えるようにする。
とりあえず計算フィールドについてざっと調べます。いつものようにkintone内ヘルプを使いました。
https://help.cybozu.com/ja/k/user/autocalc.html
(→「自動計算を設定する」というページに進みます。)
Kintoneヘルプによると、「計算」「文字列(1行)」フィールドには計算式を設定することができ、その設定をすることで他のフィールドの値や数値をもとにした計算結果をフィールドに表示できるということです。
今回は、計算フィールドに勤務時間を計算する式を設定し、出勤時間・退勤時間などを入力することで自動的に勤務時間を表示できるようにしたいのです。
まだ何となくしか理解できていないような気もしますが、とりあえず設定に進んでみましょう。(笑)
いつものようにアプリの設定画面に進み、アプリ名の設定、一般設定まで終わらせます。
次はフォームの編集なのですが、その前に一度今回表示したいレコードを整理しておきましょう。
タイムカードなので、日付・出勤時間・退勤時間は必須です。これらは日付と時刻フィールドで大丈夫ですね。
後は休憩時間。これは時刻ではないのでとりあえず数値にしておきます。
そして勤務時間。ここに計算式を設定したいので、計算フィールドを使います。
フォームの編集画面でこれらのフィールドをドラッグアンドドロップします。
そしていつものようにフィールド名を変更していくのですが、今回はフィールドコードも変更してください。理由は後で説明しますが、フィールド名と同じで構わないと思います。
計算フィールド以外の項目のフィールド名、フィールドコードを変更できたら、計算フィールドの設定に進みます。
先に設定画面を見せてしまいますね。
フィールド名を勤務時間とし、計算式を入力します。
ここで先ほど設定したフィールドコードを利用するのです。
計算式をフィールドコードで作るので、このときにわかりやすいようなフィールドコードにしておきましょう。
タイムカードアプリなので表示形式は時間に。一応フィールドコードも設定しておきます。
これでフォームの編集は完了です。
実はこのあたりで少し違和感があり上手くいかないような気はしていたのですが、とりあえず進みます。原因は後程わかってくるのでもう少しお待ちください。(笑)
一覧の追加に進み、表にしたいフィールドをドラッグアンドペーストし、保存、設定完了。
アプリのレコード入力画面に進み、実際に入力してみると
というのも、時刻と数値を同じ式の中で計算するって変ですよね。
やはり時間を計算する時に参照できるフィールドは決まっているみたいです。
もう一度挑戦・・・
では、やり直します。(笑)
休憩時間も計算に含むには、やはり時刻のフィールドで表すしかないのではという結論に至りました。
つまり、休憩開始時刻と休憩終了時刻のフィールドを作り、
計算式を
「退勤時間―出勤時間―(休憩終了時間―休憩開始時間)」とします。
計算的にはこれで正確な勤務時間が表示されますね。
フォームの編集画面で日付フィールド、時刻フィールド(4つ)、計算フィールド(2つ)を選びます。
時刻フィールドは「出勤時間」「退勤時間」「休憩開始時間」「休憩終了時間」にそれぞれフィールド名・フィールドコードを変更し、計算フィールドは「勤務時間」「休憩時間」に変更しました。
計算式は以下のように設定しました。
ついでにもうひとつ計算フィールドを作り、休憩時間を表す式も設定してみました。
これで一覧の追加画面に進むとこんな感じです。
休憩開始時間と休憩終了時間は表には必要がないと思ったので、項目には追加していません。
これで保存、設定完了をクリックし、実際にアプリを使ってみると・・・
一応タイムカードアプリの作成はできました!
ただやっぱり休憩時間をもっと簡単に入力できるようにならないのでしょうか・・・。
このままだと休憩時間がない場合の入力が不便ですよね。
休憩開始時刻と休憩終了時刻に同じ時間を入力しておけば、計算上は正確な勤務時間が表示されますが少し不自然です。
何だか不完全燃焼な感じですみません・・・。何かいい改善策を見つけ次第、ブログでご報告します。
ただタイムカードアプリの作成自体はそれほど難しいことではなく、この記事も参考にして頂けるのかなと思います。
皆さんも用途に合わせ、ぜひ一度タイムカードアプリの作成・利用してみてください!