この記事でわかること
・フローのみで祝日の情報を取得する
・使用するAPIについて
・祝日を判定するフローの使用方法
Salesforceのフローのみで祝日情報を取得する
Salesforceフローを使用してのお客様や従業員への通知やToDoを作成する際に、休業日に実行したくない場合等あると思います。曜日の判別は数式で簡単にできますが、祝日の判別はデフォルトの情報だけでは難しいです。祝日のデータをインポートして管理する方法は簡単ですが、1年後にインポートを忘れて問題になるかもしれません。ここでは、フローのみで祝日の情報を取得する方法
を解説します。
祝日設定でできること
- 月曜日が祝日の場合、リマインドメールが金曜日に送信されるようにする。
- 顧客への通知を営業日以外に送信したくない。
- 祝日を除いた日数で計算をしたい。
使用するAPIについて
祝日のデータを提供するAPIサービスを利用します。ここでは、日本の祝日を提供する「国民の祝日:日本 API」を使用します。このAPIでは今年と翌年分の祝日を取得します。年が変われば、その翌年の祝日を取得します。
フローを使った祝日の設定方法
指定ログイン情報・外部ログイン情報の作成
フローからAPIをコールするには、外部ログイン情報と指定ログイン情報の作成が必要です。以下の手順で設定します。
- Salesforceの設定画面から「指定ログイン情報」を開く
- 上部のタブから「外部ログイン情報」を選択し、「新規」を押下します。
- 外部ログイン情報の作成
- 作成画面には以下の内容を入力します。
- 表示ラベル:national_holidays_api
- 名前:national_holidays_api
- 認証プロトコル:認証なし
- プリシンバルの「新規」を押下し、以下の情報で作成します。
- 指定ログイン情報の作成
- 「指定ログイン情報」のタブに戻り、「新規」を押下します。
- 以下の内容を入力し、「保存」を押下します。
- 権限セットの作成
- Salesforceの設定画面から「権限セット」を開き、「新規」を押下します。
- 以下の内容を入力し、「保存」を押下します。
- 表示ラベル:national_holidays_api
- API参照名:national_holidays_api
- 「外部ログイン情報プリンシパルアクセス」を押下します。
- 「編集」を押下し、「有効な外部ログイン情報プリンシパル」に「national_holidays_api - api」を追加して保存を押下します。
- 権限の設定画面に戻り「割り当ての管理」でフローの実行ユーザーに割り当てます。
祝日を保存するためのオブジェクトの作成
- Salesforceの設定画面の上部の「オブジェクトマネージャー」を開きます
- 「作成」から「カスタムオブジェクト」を押下します。
- カスタムオブジェクトの作成
- 以下の情報を入力し、「保存」を押下してください。
- 表示ラベル:休日
- オブジェクト名:Holiday
- レコード名:祝日名
- データ型:テキスト
- 項目とリレーションの設定
- サイドバーから「項目とリレーション」を押下し、以下の項目を作成します。
これで、祝日を保存するためのカスタムオブジェクトが作成されました。
フローの作成
Salesforceの設定画面から「フロー」を開きます。
「新規フロー」から「最初から開始」⇨「スケジュールトリガーフロー」⇨「作成」を押下します。
1.トリガーの設定
開始ブロック内のスケジュールを設定から開始日と開始時刻をお好みの時間で設定します。※業務が少ない深夜がおすすめです。
頻度もお好みで設定してください。※「毎週」が推奨です。
2. 休日データの取得
- アクションを追加し、下部にある「HTTPコールアウトを作成」を押下します。
- 名前に「GetHolidaysData」を入力し、指定ログイン情報に「national_holidays_api」を選択して「次へ」を押下します。
- 表示ラベルに「GetHolidaysData」、メゾットに「Get」を入力して「次へ」を押下します。
- 「次へ」を押下します。
- 「接続」を押下して、「保存」を押下します。
- 「表示ラベル」と「API参照名」を入力します。
3. 取得データでループ
コレクション変数:[2]で取得したものの出力 > 2XX
4. 休日レコードの作成
- レコードの項目値の設定方法:手動
- オブジェクト:休日
- 項目値>Date__c:ループの現在の項目 > z0date
- 項目値>Name__c:ループの現在の項目 > name
- 一致レコードを確認:有効
- 条件の要件:すべての条件に一致
- 項目値>日付 / 次の文字列と一致する / ループの現在の項目 > z0date
- 1件の一致レコードが存在する場合:一致レコードをスキップ
- 複数の一致レコードが存在する場合:すべての一致レコードをスキップ
5. フローを保存し、有効化してください。
ここまでで、休日の情報をSalesforceに取り込むことができました。
使用方法
フロー内に以下の2つを配置することで、祝日であるかの判別が可能です。
- 休日を取得
オブジェクト:休日
絞り込み項目は検索したい日付を指定してください。
- 休日であるかの分岐
条件:休日を取得 / null / False or True