カスタマーセンターの運営において、対応時間の把握は重要な指数ですよね。
Salesforceでは「営業対応期間」機能を有効化する事で、営業時間内でのケースオープン日数を表示出来るのですが、これをフローでも実装出来そうだなと思ったので作成してみました。
参考リンク:
https://www.circlace.com/blog/salesforce/agora-bu3009_20190627.html※ケース表示イメージ

営業時間は下記を想定
◆営業時間想定
平日:9:00
-18:00
土曜、日曜、祝日:休業
◆休業日
今回はカスタムオブジェクトを作成しました。
土日を除く祝日、振替休日、長期休業日など、日付をレコード登録します。

因みにSalesforceでは休日設定を行う標準機能もあります(サポートの休日)。
これは毎年、毎月など「繰り返しの休日」設定も可能なのですが、フローでは登録した最初の日時しか取得できない仕様でした。レコードが作成されているわけではないのですね…残念。
◆フロー
・開始条件を設定
オブジェクト:ケース
トリガ設定:レコードが更新された
エントリ条件:「完了日」がNull False
・ツールボックスから変数を作成
1.var_Date:日付型
2.var_Count:数値
3.var_holidayCount:数値 デフォルト値1
4.var_workingCount:数値
デフォルト値1・ツールボックスから数式を作成
1.作成日‐クローズ日間の日数を取得
する数式
2.判断で利用する日付用の数式

3.曜日判断用の数式

4.営業対応時間計算用の数式

※今回、時間(h)単位で表示するため上記設定にしてますが、以下のように変更も可能です。
日:
”/3600 ” → ”/86400”に変更
分:
”/3600 ” → ”/60”に変更
秒:”/3600”を除く
※平日の営業時間によって(({!var_workingCount}-1)*15*60*60)の”15”は変更が必要です(例:24h-9h(
営業時間)=15h)
・フロー要素の配置
1.未経過の休業日レコードを全て取得

2.作成日を変数にセット。

3.作成‐完了日間の日数分処理を繰り返す為、
判断要素で疑似的にループを作成します


4.数式を使って、土日であるかを判定します

5.土日でない場合、取得した休業日レコードから一致する日付をフィルタします

6.5でフィルタしたレコード有無で、休業日が含まれるかを判定します


7.日付が営業日の時は営業日カウントに加算

8.
日付が休業日の時は休業日カウントに加算
9.日付カウントを加算。3の処理に接続して、翌日の営業/休業日判断を繰り返します


10.作成‐クローズ日間の休業日判定が全て完了後、ケースに数式をセットして終了

◆結果

休業日、営業時間外を除く対応時間の表示が出来ました!
今回はケースを軸に時間を表示してみましたが、
フローを使う事で様々なオブジェクトで営業対応時間を計算する事ができますね。
例:商談クローズまでの営業対応時間を計算
例:工事(カスタムオブジェクト)の作業開始~作業完了までの営業対応時間を計算
{{i18n("articles.view.premium")}}