Salesforceのフローを用いて、なんらかのレコードを作成・更新したタイミングで所定の項目を同時に更新したいといったことはよくあります。
ここでは1つの例として、何らかのカスタムオブジェクトを新規作成した時、そのカスタムオブジェクトが関連する他のオブジェクトにあるレコード内の値を取得し、保存する処理を紹介します。
以下の例では、テストオブジェクトに対してカスタム項目を追加し、商談金額をコピーするようなフローを実現するための例です。他のオブジェクトや項目で実現したい場合は、内容を読み替えて実現してください。
フロー用にカスタム項目を追加
まず、フローで使用するカスタム項目を追加します。
最低限追加が必要なカスタム項目は2つです。
- 他のオブジェクトとの関連付けをするための参照項目
- フロー実行により取得した値を保存するためのカスタム項目
カスタム項目を追加したら、フローの新規追加を行います。
フローの種別を設定
フローの種別は「レコードトリガフロー」を選択し、右下の作成ボタンをクリックします。
次にフロー実行タイミングをどのオブジェクトに対して設定するかを設定します。
ここでは以下のような例として、「テストオブジェクト」というカスタムオブジェクトに対して、レコードが作成または更新された場合に値を取得・保存するようなフローとします。レコードでの作成時にのみコピー動作を行い、更新時にはフロー動作で上書きコピーをしたくないといった場合もあります。その場合は「レコードが作成された場合」を選択します。
また、フロー実行時、作成・更新するレコードに対して値を保存するため「高速項目更新」を選択し、「完了」をクリックします。
フロービルダー画面が表示されます。
開始を示す図と終了を示す図の間にマウスアイコンを移動させると、クリックする場所が表示されるので、クリックします。
フロー実行元となる作成・更新レコード自身を更新する今回の場合、「トリガレコードを更新」を選択します。
レコード更新処理の設定画面が表示されます。
「フローをトリガした◯◯オブジェクトレコードを使用」を選択します。 ※◯◯はオブジェクト名
保存先として作成したカスタム項目、ここでは商談金額(フロー代入)「OpportunityFlow__c」へ代入するように項目を指定します。
フロー実行時に作成・更新したレコードの内容は、$Recordという変数に保存されています。以下のように参照先となる商談オブジェクトの商談金額まで順番に辿り、入力値として選択します。
保存先と入力値を設定すると、以下のようになります。
右下の「完了」ボタンをクリックし保存します。
設定した結果、フロービルダー画面には以下のような設定表示がされます。
フロービルダー画面右上にある「保存」→「有効化」の順にボタンをクリックすると、フローの動作が開始されます。
フローでの値取得と、クロスオブジェクト数式での値取得の違い
フローを実行し、値が取得できることを確認します。
また、クロスオブジェクト数式とどのような違いがあるかについて、確認用のテスト項目を設定し確認しながら説明します。まず、フローの保存先オブジェクトに対してクロスオブジェクト数式のカスタム項目を追加します。
今回は商談オブジェクトの商談金額項目の値を「フローで取得・保存する」場合と「クロスオブジェクト数式」で表示する場合の違いを比較してみます。商談オブジェクト側にテスト入力したレコードを作成します。テスト用の金額値としてここでは50,000円としています。
次に、フローでのコピー動作を行うテストオブジェクト側で、新規にレコード作成します。
「商談金額(フロー代入)」の項目は空欄のまま作成しても良いのですが、コピー動作確認の意味でコピー元とは違う金額(10,000円)を入力し、「保存」ボタンをクリックしレコード作成します。
レコード作成直後の表示を確認します。「商談金額(フロー代入)」項目に、商談オブジェクトレコード側に設定した「50,000円」がコピー動作により代入されました。
図で示すと以下のようになります。クロスオブジェクト数式で設定した項目は常に連動し、どのタイミングで関連レコード(以下の例ではテストオブジェクトのレコード2つ)については、作成タイミングの影響を受けません。
これに対してフローでは、別項目扱いになるためにコピー動作が行われなければ値が連動しません。
また、フロー動作で代入した後にコピー元情報(例では商談の金額項目)を変更しても別の値として保持されます。
このように、常に連動させたいか、あるいはある条件の時にのみコピーさせたいかでクロスオブジェクト数式とフローでのコピー動作を使い分けましょう。