見出し画像

Salesforceで3つ以上の時間を計算

おはようございます、いつきです。
最近一段と寒くなってきましたね。
社内でおすすめされて買った移動式のこたつが手放せなくなっています。

最近はSalesforceで労働時間の計算をしたいというニーズがあったのですが、地味に苦戦したのでそれを残そうと思います。
今回の方法2の場合「時間」形式が3つになるのでどうしよう悩みました。

やりたいこと

勤務開始時間 - 勤務終了時間 - 休憩時間
を計算したいというのが今回のゴールです。

たとえば、
10時~19時、休憩時間が1時間なら労働時間は8時間
みたいな計算です。

項目名とAPI参照名は以下のようにしました。
勤務開始時間:StartTime__c
勤務終了時間:EndTime__c
休憩時間:RestTime__c
休憩時間(分):RestTimeMinutes__c

方法1 休憩時間を数値で入力

こちらは簡単な方法です。
勤務開始時間と勤務終了時間を「時間」形式で、
休憩時間を「数値」形式で項目を作ります。

その場合は以下の数式で登録すると時間を算出することができます。

( EndTime__c - StartTime__c )/3600000 - ( RestTimeMinutes__c ) /60

方法2 休憩時間も「時間」形式で入力

以下のような感じで、休憩時間も「時間」形式で入力する場合は工夫が必要でした。

「時間」- 「時間」の計算をすると結果は数値で返ってきます。
上記の例だと以下のようになります。

18:00-10:00 = 28,800,000

当然ですが、数値形式と時間の計算はできません。
そのため、3つ目の時間になる休憩時間も数値形式にする必要があります。
今回は0時で引くことで算出しました。
※後述:value関数でもできるかも。

RestTime__c - TIMEVALUE("00:00:00.0") 

あとは、先ほどの勤務開始時間・終了時間の計算式と組み合わせれば完成です。

( ( EndTime__c - StartTime__c) - (RestTime__c - TIMEVALUE("00:00:00.0") ) )/3600000

まとめ

もう少し良い方法がありそうな感じもしますが、ひとまず備忘録的に残しておきます!

それではまた来週!

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