Salesforce:今月の営業日あと何日?を毎日更新しつつ、数式項目で扱えるようにする(前編)

公開:2021/01/20
更新:2021/01/21
5 min読了の目安(約4500字TECH技術記事

ニーズ

・当月のMAX営業日が何日あって、今日含めて残り何日なのかをぱっと計算したい。
・営業日ごとに減算、加算したい数字がある。

Apexでやってる記事はあるけど、数式項目で計算するための設定手順とかはなかった。
これは自信を持って言える。地味に困ってる会社さん多いでしょ。
そのお悩み、barusuがウマ~い感じに解決します。

概要

  1. オブジェクトを2つ作成する
  2. 日付用オブジェクトに日付データを投入する
  3. 営業日表示用オブジェクトでレコードを一つ作成する
  4. スケジュールトリガフローを作成する
  5. 数式項目で参照する

1. オブジェクトを2つ作成する

※オブジェクト作成手順は省略します。
作成するオブジェクト
 ・日付データ格納用
 ・営業日表示用

作成:日付データ格納用オブジェクト

以下項目を作成します。
※表示ラベル:API名:型 で記載

  • 日付:date:日付
  • 曜日:weekDay:選択リスト(月~日曜日を登録する)[1]
  • 祝日:holiday:テキスト(255)
  • 休日フラグ:isHoliday:数式(チェックボックス)
    <数式>
    OR ( Not(ISBLANK( holiday__c )) ,
    ISPICKVAL( weekDay__c ,"土曜日"), ISPICKVAL( weekDay__c ,"日曜日"))
    

作成:営業日表示用オブジェクト

以下項目を作成します。
※表示ラベル:API名:型 で記載

  • 当月営業日:workdayThisMonth:数値(18,0)
  • 残営業日:workdayRemaining:数値(18,0)

2. 日付用オブジェクトに日付データを投入する

スプレッドシートを使います。
祝日一覧(自動取得)
GASでGoogleカレンダーの「日本の祝日」から予定を取得してスプレッドシートに転記しているやつです。

[日付CSV]シートをCSV出力し、Salesforceへデータローダ[2]を使って投入します。

インポート先オブジェクト:日付データ格納用オブジェクト
対応項目:CSV項目と一致するものを選択

3. 営業日表示用オブジェクトでレコードを一つ作成する

名前は何でもOKです。

作成されたら、URLからこのレコードのIDを取得しておきます。
※後々設定するフローで使うので、どこかにメモしておいてください。

4. スケジュールトリガフローを作成する

さてフローの作成です。
処理の流れは以下となります。

  1. 今月の1日~末日の期間の土日、祝日以外の日付レコードを取得して全体の営業日数をカウント

  2. 今日~末日の期間の土日、祝日以外の日付レコードを取得して残り営業日数をカウント

  3. 営業日表示用オブジェクトのレコードの値を更新

  4. 完了

  5. 設定→[フロー]→[新規フロー]の順にクリック

  6. スケジュールトリガフローを選択→[次へ]をクリック

  7. どちらかを選択(個人的には自動レイアウト推し)

  8. [スケジュールを設定]をクリック

  9. 開始日、開始時刻、頻度を入力して[完了]をクリック

  10. 画面左の[新規リソース]をクリック

  11. プルダウンから[数式]を選択

  12. API参照名:FirstDay、データ型:日付、下記数式を入力して[完了]をクリック

    Date(Year(today()),Month(Today()),1)
    

  13. 6~7の手順同様に、以下2つの数式リソースを追加する
    API名:LastDay、日付型
    if(month(Today())=12,Date(Year(Today())+1,1,1)-1,Date(Year(Today()),month(Today())+1,1)-1)
    API名:Today、日付型
    today()

  14. + をクリック(オブジェクトを選択はクリックしない)

  15. 下にスクロールして[レコードを取得]をクリック

  16. 表示ラベル、API参照名を入力してオブジェクト:営業日計算用日付を選択

  17. 条件を以下のように設定する
    ※True は {!$GlobalConstant.True} で指定できます

  18. 画像赤枠内のように設定し[完了]をクリック

    • 保存するレコード数:すべてのレコード
    • レコードデータの保存方法:項目を選択して後はSalesforceに任せる
  19. + をクリックして[割り当て]を選択

  20. 表示ラベル、API参照名を入力して[+新規リソース]をクリック

  21. リソース種別:変数を選択

  22. API参照名を入力、データ型:数値、小数点の位置:0、デフォルト値:0 に設定し[完了]をクリック

  23. 変数:作成した変数、演算子:[次の数と一致する]、値:12で作成したレコードコレクションを選択

  24. ここまでで、レコード取得→取得したレコードの数を変数に代入 の処理が完成。

    予想以上に手順のボリュームたっぷりになっちゃったので、ココで一旦区切ります。

  25. 一旦保存するので[保存]をクリック

  26. 表示ラベル、フローのAPI参照名を入力して[保存]をクリック

続きは明日書きます(多分)
書いたらこの記事にリンク記載しますので少々お待ちくださいませ。

(つづく)

追記:
つづきこちら!
Salesforce:今月の営業日あと何日?を毎日更新しつつ、数式項目で扱えるようにする(後編)

脚注
  1. テキスト型でも構わないです。手動で登録する可能性も考慮して選択リストにしました。 ↩︎

  2. データインポートウィザードでも何でも良いです。 ↩︎