公開日:2020-09-10
作業時間を計算してみよう
作業報告アプリみたいなのを作成する時に、開始時刻と終了時刻を入力すると自動で時間数を計算するというニーズがあると思います。 こういう場合、kintoneだと計算式で簡単にできますよね。

作業時間は計算フィールドで設定はこんな感じ。

でも、これだと1レコードに1作業しか入力できないのでテーブルにしてみるのも良いですね。
テーブルにしてみる
先ほどの3つのフィールドを複製してテーブルにしてみます(kintoneでは作成済みフィールドはテーブルに変更出来ないため) フィールドコードが変わるので計算式を修正する必要はありますが、テーブルにした場合でも時間計算は先ほどと同じような感じで表示可能です。

こうやって作ってみると、テーブル内の作業時間の合計も欲しくなりますね。
テーブルの合計値も計算してみる
テーブルの上に作業時間合計を追加してみます。

計算フィールドではいくつかの関数があって、テーブル内フィールドの集計はSUM関数を使います。フィールドの設定はこんな感じですね。

ただ、時刻の場合は24時間で0に戻るので、1日の作業時間合計というのには使えますが1週間の作業時間合計という入力だと正確な表示にはなりません。

こういう場合は時刻ではなく時間を選ぶと、24時間を超えても正しい時間数で表示可能です。

時間には、
時間(例:26時間3分)
時間(例:1日2時間3分)
と日数表示にする設定もあるので、用途によって使い分けてください。
さて、これで出来たかと思ったら天の声が・・・
「1日を1レコードで入力するよね。それなら、一覧画面で今月一覧を作って、一覧の上に当月作業時間合計が表示されてる方が親切かな。」
・・・確かに。ということで、Customineで設定してみましょう。
一覧画面のメニュー位置に当月作業時間合計を表示してみる
こちらのTIPSを参考に作成してみます。
TIPSでは、表示しているレコードと一覧の条件に一致している全レコードを集計していますが、今回は一覧の条件に一致している全レコード(当月分)が対象になります。

アプリに登録して動作確認してみると。。。

あれ? レコードが1つもなかった場合の値がセットされていますね。なお、こういう時のために「何もない時」という場合にはそれとわかる値をセットするようにしておくと修正が楽になります。
では、原因を調べてみましょう。
問題を切り分けてみましょう
こういう場合は、まずはドキュメントの確認です。Customineでは?のアイコンを押すと、「やること」や「条件」のドキュメントが表示されるようになっています。
今回確認するのは、こちらのページです。 「レコード中のフィールド合計値を計算する」
「計算」フィールドタイプは数値形式である必要があります。日付、時刻、日時形式の「計算」フィールドには対応していません。
なるほど。。。
つまり、1レコード内だけならkintone内部で値を持ってるから時刻でも計算できるけど、複数レコードの集計だと数値で表示していないと計算できないという感じですね。
ということで、複数レコードの集計用に計算フィールド(作業時間合計_分)を1つ足してみます。そのまま数値にすると秒数が表示されるので、計算式では60で割っておきます。

そして集計すると。。。

できた(分の合計値)
あとは、時と分とか、日と時と分とかに分けて表示すれば完成ですね。

表示の計算式はどうなるかというと。。。。
今月の総作業時間は ${$29} です。
今月の総作業時間は ${rounddown($29/60,0)}時間 ${$29%60}分 です。
今月の総作業時間は ${rounddown($29/(24*60), 0)}日 ${rounddown(($29 – rounddown($29/(24*60), 0)*(24*60))/60, 0)}時間 ${$29%60}分 です。
こんな感じです。rounddownを使うとうまく計算できると思います。
なお、こんな書き方もできます。
今月の総作業時間は ${rounddown($29/(24*60), 0)}日 ${rounddown($29/60%24, 0)}時間 ${$29%60}分 です。
他にも書き方はいろいろあると思いますので、お好みで修正してください。
最後に
kintoneアプリは使っていく間にどんどんと要望が出てきますので、Customineのようにカスタマイズを簡単に変更できるのは便利ですねー
そして、意図通りに動かないという場合は、ドキュメントを確認したり、こちらのページのチェック項目を確認したりが良いかと思います。初めての方へ:設定が正しいはずなのに動かないなと思ったら
皆さんも、色々とお試しください!
投稿者プロフィール

-
"サイボウズ公認kintoneエバンジェリスト
Customineでも色々とやってます"
最新の投稿
gusuku2025年2月21日デプロイットの機能を確認しよう カスタマイン連携編
gusuku2025年1月24日Deploitの機能を確認しよう 基本編
gusuku2024年12月7日「findifや ああfindifや findifや」
life-work2022年12月9日アメリカでリモートワークしてみた