業務管理部門の要望
以下の要件を実装してくれい。
( `・∀・´)ノヨロシク
【要件】
取引先の最終活動日というカスタム項目に、最後に活動した日が自動的に更新されるようにしてほしい。
困ったなぁ…
Todoオブジェクトから取引先の最後の活動日を取得して、取引先レコードの最終活動日というデータ項目に値を設定しないといけないのだけど、どうすれば良いかね?
それはレコードトリガフローで実装できます。
レコードトリガフローとは
レコードを作成、更新、または削除したときに自動的に起動するフローのことをレコードトリガフローと言います。
レコードトリガーフローは、Salesforceの Flow Builder を使用して作成され、データの変更やイベントに応じて自動的にアクションを実行することができます。
サンプルレシピ
上記の要件を実現するためのサンプルレシピを実装してみましょう!
- レコードトリガフローを使用します。
- フローをトリガするオブジェクトはToDoで、レコードが作成または更新されたときです。
(本来は、削除されたときも必要ですがこのレシピでは省略します。) - 『フローをトリガしたToDoレコードの取引先に紐づく』ToDoレコードのなかから、「完了したToDo」 かつ「最新の活動日(期限)」を取得します。
- 取得した最新の活動日を取引先の最終活動日にセットしてUpdateします。
前提/準備
1.取引先オブジェクトに以下のカスタム項目を追加してください。
┌ 項目の表示ラベル:最新活動日
│ 項目名:LatestActivityDate
└ データ型:日付
2.上記のカスタム項目をページレイアウトに追加してください。
Flow Builderの表示
1.管理者アカウントでログイン
2.設定>フロー>新規フロー>レコードトリガフロー
3.「作成」をクリックすると Flow Builder が表示されます。
開始を設定
「開始を設定」というダイアログが表示されますので、以下のとおり設定し、「完了」をクリック
オブジェクト:ToDo
フローをトリガする条件:レコードが作成または更新された
条件の要件:なし
フローを最適化:アクションと関連レコード
(レコードがデータベースに保存された後にフローを実行する)
[要素:レコードを取得] の作成(ToDo)
フローをトリガしたToDoレコードに関連する取引先の 『状況が Complated(完了)で日付が最新の』ToDoレコードを取得します。
1.要素を追加(+マーク)をクリック
2.「レコードを取得」を選択し、以下のとおり設定し(それ以外はデフォルトのまま)、「完了」をクリック
表示ラベル:ToDoレコードの取得
API 参照名:GetToDoRecord
オブジェクト:ToDo
条件の要件:すべての条件に一致 (AND)
┌ 項目:取引先ID (AccountId)
│ 演算子:次の文字列と一致する
└ 値:$Record > 関連先ID (WhatId)
ToDoレコードを並び替え:
┌ 並び替え順:降順
└ 並び替え:期日のみ (ActivityDate)
保存するレコード数:最初のレコードのみ
$Record変数は、フローが実行される際に処理されているレコードを指します。
「ToDoレコードを並び替え」で期日を降順とすることにより、最終活動日が最新のレコードが格納されます。
[要素:レコードを取得] の作成(取引先)
フローをトリガした todo レコードの関連する取引先レコードを取得します。
1.要素を追加(+マーク)をクリック
2.「レコードを取得」を選択し、以下のとおり設定し(それ以外はデフォルトのまま)、「完了」をクリック
表示ラベル:取引先レコードの取得
API 参照名:GetAccountRecord
オブジェクト:取引先
条件の要件:すべての条件に一致 (AND)
┌ 項目:取引先ID (Id)
│ 演算子:次の文字列と一致する
└ 値:$Record > 関連先ID (WhatId)
保存するレコード数:最初のレコードのみ
[要素:割り当て] の作成
取引先レコードの取得 (GetAccountRecord) で取得した取引先レコードの最終活動日に、ToDoレコードの取得 (GetToDoRecord) で取得したToDoレコードの期日を代入します。
1.要素を追加(+マーク)をクリック
2.「割り当て」を選択し、以下のとおり設定し(それ以外はデフォルトのまま)、「完了」をクリック
表示ラベル:取引先レコードに割り当て
API 参照名:AssignToAccountRecord
変数値を設定:
┌ 変数:GetAccountRecord (取引先) > 最終活動日 (LastActivityDate)
│ 演算子:次の文字列と一致する
└ 値:GetToDoRecord (ToDo) > 期日のみ (ActivityDate)
[要素:レコードを更新] の作成
1.要素を追加(+マーク)をクリック
2.「レコードを更新」を選択し、以下のとおり設定し(それ以外はデフォルトのまま)、「完了」をクリック
表示ラベル:取引先レコードを更新
API 参照名:UpdateAccountRecord
更新するレコードを検索してその値を設定する方法:レコードまたはレコードコレクションからの ID およびすべての項目値を使用
レコードまたはレコードコレクション:GetAccountRecord (取引先)
フローのプロパティを設定
1.「保存」をクリック
2.フローを保存というダイアログが表示されるので、、以下のとおり設定し(それ以外はデフォルトのまま)、「完了」をクリック
フローの表示ラベル:レコードトリガフロー:最終活動日を取引先に設定する
フローの API 参照名:Set_Last_Activity_Date_On_Account
サンプルレシピのテスト
それでは作成したフローの動作確認をしてみましょう。
1.任意の取引先に『期日がすべて異なる』活動の記録を3つ以上作成してください。
2.Flow Builderで「デバッグ」をクリック
3.フローをデバッグというダイアログが表示されるので、以下のとおり設定し(それ以外はデフォルトのまま)、「実行」をクリック
ToDo:テスト対象の取引先に紐づくいずれかのToDoを選択
4.デバッグの詳細の レコードを更新:取引先レコードを更新 の「>」をクリックして詳細を表示します。
以下のように、変数値の LastActivityDate に、期待する値が格納されていれば成功です!
ID が {!GetAccountRecord} に保存されている Account レコードを更新します。
変数値
[LastActivityDate=2023-08-01T00:00:00Z,Id=0015i00000ttTpYAAU]
まとめ
この画面フローの完成形は以下のとおりです。
1.開始(レコードトリガフロー)
2.ToDoレコードの取得
フローをトリガしたToDoレコードに紐づく取引先のToDoのうち、状況が Complated(完了)で、日付が最新のレコードをGetToDoRecordに格納
3.取引先レコードの取得
フローをトリガしたToDoレコードに紐づく取引先レコードを GetAccountRecord に格納
4.取引先レコードに割り当て
GetAccountRecord の最終活動日に、GetToDoRecord の期日を代入
5.取引先レコードを更新
GetAccountRecordをUpdate
6.終了
要件が実装できたことを確認できたでしょうか?
以上です!
コメント