【Salesforce】フロー指定回数の繰り返し処理
はじめに
はじめまして、CREFILでコンサルタントをしている濱本と申します。
弊社ではSalesforceを使用した案件に携わることが多く、特に私はフローを使用した自動化処理を得意としております。
今回はSalesforce フローのループについてお話ししたいと思います。
ループと聞くと「取得したデータ数分繰り返す」であったり「指定の回数分繰り返す」ことができるのかなと思ってしまいますが、Salesforceフローのループでは前者の「取得したデータ数分繰り返す」ことしかできません。
では「指定の回数分繰り返す」処理をしたい場合はどうしたらよいのでしょうか。
具体例を使用して説明していきたいと思います。
作成するフローの処理概要
Fruit handling 株式会社では取引先ごとに主要商品の月目標×12か月分を年初に計画させています。今年の主要商品は5品です。
担当者が当年の「月別目標」を作成したら、各商品ごとに月の目標を入力させるレコード(5商品×12か月分=60レコード)を自動生成してほしいです。
【関連オブジェクト】
・取引先:Account
・主要商品管理:main_item__c
⇒ 対象年度の主要商品を扱う
・月別目標:fiscal_year_target__c
⇒ 対象年度と取引先を管理(主オブジェクト)
・月別目標-目標管理:fiscal_year_target_amount__c
⇒ 商品ごとの月別の目標売上額(従オブジェクト)
【フローで作成する処理】
実行条件:担当者が月別目標を作成する
(1)「主要商品管理」オブジェクトから「月別目標」で設定した年度と同じ年度の商品を取得する
(2)(1)で取得した商品ごとに12か月分の月別目標-目標管理レコードを作成する
指定回数の繰り返し処理
上記の処理(2)で指定回数の繰り返し処理が発生します。
12回の繰り返しをどう作るかというと、以下の図のように「決定」を使用します。
この処理の中では1から始まる数値変数を使用して、「決定」を通過するたびに1を加算しています。この数値変数が12以下のうちは「決定」を繰り返します。
ただし、あまり回数が多いものはお勧めしませんので、あくまでも繰り返し数が少ないものだけに利用してください。
※詳細設定はサンプルフロー作成手順を参照ください。
また、今回のように商品ごとに指定回数を繰り返したい時など、指定回数の繰り返しが”複数”出てくる場合は、「ループ」を使用する形に変更します。
方法としては「決定」を使用してダミーで回数分のレコードを用意し、複数レコードをまとめてコレクション化してループに使用します。
※詳細設定はサンプルフロー作成手順を参照ください。
※今回は対象月という項目を「ループ」の処理内の「割り当て」で利用していますが、繰り返し回数分のレコード数があれば特に利用する項目が無くてもかまいません。
以上がフローで指定回数分の繰り返しを行う方法です。アイデア次第でいろいろなことができるので、皆さんのフロー作成に少しでも参考になれば幸いです。
最後に今回サンプルで使用したフローの作成手順を載せておきます。
サンプルフロー作成手順
1. 「レコードトリガーフロー」を選択し、新規フローを作成する。
2. 「開始」を設定する。
3. 「レコードを取得」を設定して「開始」⇒「レコードの取得」とつなげる。※1つ目のループに使用する[商品コレクション]を作成する。
4. 12回繰り返させるために、ダミーのコレクションを作成する。
※各商品ごとに12回繰り返す2つ目のループに使用する[ダミーコレクション:月]を作成する。
ⅰ. カウントアップ用の変数を作成する。
ⅱ. 1レコード用のレコード変数を作成する。
ⅲ. 複数レコード用のレコードのコレクション変数を作成する。
ⅳ. 「決定」の設定をして「レコードの取得」⇒「決定」とつなげる。
ⅴ. 「割り当て」の設定をして「決定」”12以下”⇒「割り当て」とつなげる。※ここではダミーコレクションの1レコードの設定を記述
ⅵ. 「割り当て」の設定をして「4-ⅴ割り当て」⇒「4-ⅵ割り当て」⇒「4-ⅳ決定」とつなげる。※ここではレコードコレクション変数へ追加を行っている。なおコレクション追加は「4-ⅴ割り当て」の中に記載するとうまくコレクションに追加されないことがあったので、この例のように「割り当て」を分けることをお勧めする。
5. 1つ目の「ループ」を設定し、「4-ⅳ決定」の”13以上”⇒「5ループ」とつなげる。[商品コレクション]
6. 2つ目のループを設定し、「5ループ」項目ごと⇒「6ループ」とつなげる。さらに「6ループ」最後の項目の後⇒「5ループ」とつなげる。[ダミーコレクション:月]
ⅰ. 1レコード用のレコード変数を作成する。※ここでは実際に作成するレコードの設定用の変数を作っている。
ⅱ. 複数レコード用のコレクション変数を作成する。※ここでは実際に作成するレコードの設定用の変数を作っている。
ⅲ. 「割り当て」の設定をし「6ループ」項目ごと⇒「6-ⅲ割り当て」とつなげる。 ※ここでは1レコード分(1か月分)の設定をしている。
ⅳ. 「割り当て」の設定をし「6-ⅲ割り当て」⇒「6-ⅳ割り当て」⇒「6ループ」とつなげる。※ここではレコードコレクション変数へ追加している。
7. 「レコードを作成」を設定し「5.ループ」最後の項目の後⇒「7.レコードを作成」とつなげる。
以下が作成したフローの全体像です。
それでは実際に動かしてみましょう!
「月別目標」で新規レコードを作成します。
「月別目標-目標管理」レコードが自動で作成されました!