🐴

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

2021/01/20に公開
6

ニーズ

・当月の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. データインポートウィザードでも何でも良いです。 ↩︎

Discussion

kyoumikyoumi

初めまして。
実際に残営業日数を自動で分かるようにしたくて、この記事の内容を試しているのですが、1つ質問があってご連絡しました。

理解力がなくて恐縮なのですが、手順16に出てくる「営業日計算用日付」というのは「営業日表示用」のオブジェクトでいいのでしょうか。

これまで「営業日計算用日付」を作ったことがなかったので、そこで軽くパニックになってました、、、

ここまで数時間悩みつつ進めていたので、何とか実際に表示できるようにしたいと思っています。
お手数ですが、教えていただけると大変助かります、、、

よろしくお願いします。

barusubarusu

コメントありがとうございます!!
今気づきました!

営業日計算用日付のオブジェクトは、日付データ格納用オブジェクトを指しています!
混乱させる表記になってしまって申し訳ないです!
追記しておきますねー。

kyoumikyoumi

すみません!こちらもお返事が遅くなってすみません。
ご回答ありがとうございます。理解できました!ありがとうございます。

SFのサポートにも問い合わせながらあと一歩で実現できるところまで来たので、
また質問があったらお尋ねさせていただけると幸いです!
引き続きよろしくお願いします!

beginner_admin_hirobeginner_admin_hiro

いつも参考になる情報ありがとうございます。
Salesforce管理者となり半年足らずの半人前ですが、barusuさんの記事を参考にしております。
これからも記事を参考にさせて頂きます(^^)/

beginner_admin_hirobeginner_admin_hiro

返信ありがとうございます!
元々、営業職でSalesforceはユーザでしか使用してなかったので適性有るか謎ですが、奮闘してます。

最近は数式を良く活用するのですが、式の内容見たら何となく処理が理解できるまでにはなりました。
やはり数式やフローなどのロジック周りは作成し馴れることが肝心でしょうか?