Salesforce関連の記事を書いています。

  1. Salesforce

特定の処理の回数をSalesforceの数値項目に+1(インクリメント)していく方法

Salesforceを運用していくと「何か処理をしたらその処理回数をカウントしたい」というニーズが発生する場合があります。例えば、自分が所有者になっている取引先責任者の中から特に注力すべき顧客をチェックボックスにチェックを入れることで管理したいとします。また、注力すべき顧客は最大10名までと決められているような場合を想定してみましょう。今回は、その実装方法について解説していきたいと思います。具体的には下記のような機能要件に落とし込めます。

  • チェックするとそのユーザに「+1」する
  • チェックを外すとそのユーザから「−1」する
  • 上限の10以上になったらエラーメッセージを表示させる

また前提として下記のような項目があることを想定していますので、もし作成していないのであれば事前に作成するようにしておいてください。

  • 取引先責任者オブジェクトにチェック項目(API参照名:Check__c)が必要です。
  • ユーザページに保有人数を格納する数値項目(API参照名:KeepNumber__c)が必要です。

この要件を実現するために「2つのフローの作成」が必要になります。一つのフローは「チェックされた時に起動して「+1」するフロー」。もう一つは「チェックが外された時に起動して「−1」するフロー」です。では、実際の作成していきましょう。

このフローの全体像は下記のようなものになります。取引先責任者にあるチャックボックスがTrueになったら起動し、ユーザの保有人数によって分岐させるフローになります。

まずレコードトリガーフローを選択してください。条件には下記のようにチェック項目にTrue(チェックが入った)ことを条件にします。

オブジェクト取引先責任者
トリガーを設定レコードが作成または更新された
エントリ条件を設定(条件の要件)すべての条件に一致(AND)
項目Check__c(対象項目のAPI参照名を選択)
演算子次の文字列と一致する
True
更新されたレコードでフローを実行するタイミング条件の要件に一致するようにレコードを更新したときのみ
フローを最適化アクションと関連レコード

これで対象のチェックボックスにチェックが入った時にフローが起動されるようになります。

次に、チェックを入れた取引先責任者の所有者の保有人数(API参照名:KeepNumber__c)が10人以下なのか、0人なのかを判定する決定要素を配置します。

名前数値が10以下か?(任意)
API参照名Under10(任意)
表示ラベル10以下か?
結果のAPI参照名Below10
結果を実行する条件の要件カスタム条件ロジックに一致
条件ロジック(1 AND 2) OR 3
1リソース{!$Record.Owner.KeepNumber__c}(取引先責任者の所有者の保有数)
演算子未満
10
2リソース{!$Record.Owner.KeepNumber__c}(取引先責任者の所有者の保有数)
演算子null
False
3リソース{!$Record.Owner.KeepNumber__c}(取引先責任者の所有者の保有人数)
演算子次の文字列と一致する
0

1リソースで所有者の保有数が「10未満」かを条件に加えることは理解できると思いますが、2リソースで「保有人数が空欄ではない」という条件や3リソースで「保有人数が0」という条件を追加しているのはなぜだと思いますか?

この条件は「(1 AND 2)OR 3」の(1 AND 2)にあたりますが【「10未満」かつ「空欄でない」】状態を条件にしています。これはつまり1〜9の数値が入っていることを想定しています。そして3リソースは保有人数が「0」の値が入っている場合を想定しています。なぜわざわざこんなことをするかと言うと「10未満」だけを設定すると項目の値が「0」だった場合に条件から弾かれてしまうからです。フローでは「10未満=1~9」であり「0」は含まれていないのです。なのでわざわざこんなやり方を設定しているのです。

次にもう一つの分岐を設定します。この分岐はユーザの保有人数が「空欄」だった場合の分岐になります。

表示ラベル数値が「空欄」か?
結果のAPI参照名Number_0
結果を実行する条件の要件すべての条件に一致(AND)
リソース{!$Record.Owner.KeepNumber__c}(取引先責任者の所有者の保有人数)
演算子null
True

この設定をする理由は分かりますか?もう一つの設定であえて「空欄ではない」という設定を加えた理由にもなります。それは保有数の項目が空欄だった場合、この後設定する「+1」のアクションが「0〜10の値が入っている」項目に対しては想定通り+1されるのですが、「保有数が空欄の場合は+1されない」からです。なので、この分岐を設けて異なる方法で+1をするために必要なのです。

次に10以下の分岐の下に「割り当て」要素を追加します。この割り当て要素では、数値変数に現在のユーザの保有数を格納する処理を設定します。まずは下記の赤枠の部分に「割り当て」要素を追加してください。

この割り当て要素には下記のように設定します。

変数の「KeepNumberNow」は新規で変数を作成する必要があります。下記の手順で作成してください。

  • 変数のテキストボックスをクリック
  • 「新規リソース」をクリック
  • リソース種別で「変数」を選択
  • 「API参照名」に「KeepNumberNow」と記入
  • 「データ型」で「数値」を選択
  • 「小数点の位置」は削除して「0」に設定
  • 「完了」をクリック

次に「演算子」は「次の文字列と一致する」を選択してください。

次に「値」の部分には該当する取引先責任者レコードの所有者の「保有数」の数字を設定する必要があります。なので、「{!$Record.Owner.KeepNumber__c}」と入力してください。

これで「KeepNumberNow」という数値変数に取引先責任者レコードの所有者の現在の保有数を格納する設定ができました。この割り当て要素の設定内容は下記の通りです。

表示ラベル現在の保有数を格納
API参照名SetKeepNumber
変数KeepNumberNow(新規で作成する数値変数)※作成方法は上記を参照
演算子次の文字列と一致する
{!$Record.Owner.KeepNumber__c}

次に「+1」する要素を作成します。この要素は「レコードを更新」要素を使います。

まず、「レコードを更新」要素を上記の図のように追加してください。完成した設定内容は下記のようになりますが、順番に説明していきますね。

上記の設定を一つ一つ説明していきます。

「更新するレコードを検索してその値を設定する方法」では上から2番目の「フローをトリガーした取引先責任者レコードに関連するレコードを更新」を選択してください。なぜなら、ここで更新するのは取引先責任者の所有者の保有数項目だからです。所有者の保有数項目は取引先責任者レコードに関連するレコードです。

次の「関連レコード」では上記で説明したように更新したいのは取引先責任者の所有者の保有数項目ですから「{!$Record.user__r}」のように入力して取引先責任者の所有者を指定します。このように設定することで取引先責任者の所有者の項目を更新できるようになります。

「検索条件を設定」は「なし」で大丈夫です。この分岐にくるレコードは1つしかありませんので抽出する必要がありません。

次に、項目には「KeepNumber__c(ユーザの保有数のAPI参照名)」を設定します。この項目に対して+1した数値を上書きします。

そして、ここでの最大のポイントは「KeepNumberIncrement」という数式リソースです。この数式リソースには、上記で取得した現在のユーザーの保有数に+1した数値が保存されています。この数式リソースの作成手順は下記の通りです。

まず画面左上のアイコンをクリックしてください。

次に「新規リソース」をクリックしてください。

「リソース種別」では「数式」を選択してください。表示された画面で下記のように入力してください。

リソース種別数式
API参照名KeepNumberIncrement
データ型数値
小数点の位置0
数式 {!KeepNumberNow}+1

数式の「{!KeepNumberNow}+1」に注目してください。「KeepNumberNow」というのは上記で取得した現時点のユーザの保有数が入っている数値変数でしたね。その数値変数に+1しています。この数式により「KeepNumberIncrement」に+1された数値が格納されるのです。

あとは、この+1された保有数の数式リソースでユーザの「保有数」項目を上書きするだけです。

さて、最後の要素です。数値が「空欄」だった場合の処理を設定します。

さて、「空欄」ということはどういう状況でしょうか?答えはまだユーザーがチェックを一度もしたことがないという状況です。新入社員が初めて顧客を保有するようなケースが該当します。そのような場合は、単純に「+1」するだけでOKです。なので保有数の項目に数値の「1」を追加します。(KeepNumberIncrement変数を空欄の項目に追加しても+1されませんので注意してください。)下記のように設定します。

表示ラベル「+1」する
API参照名Plus1
更新するレコードを検索してその値を設定する方法フローをトリガーした取引先責任者レコードに関連するレコードを更新
取引先責任者に関連するレコード{!$Record.Owner}
レコードを更新する条件の要件なしーすべての関連レコードを更新
項目KeepNumber__c
1

これでほぼ完了です。ただ、最後に「デフォルトの結果」の分岐の先にアクション要素を追加しておきましょう。この「デフォルトの結果」の分岐に流れるのはユーザの保有数がすでに10になっている場合です。なので、カスタムエラーアクションの要素を追加して『「10」を超えています』と表示するように設定しましょう。

下記のように設定してください。エラーメッセージは任意に変更して頂いて問題ありません。

最初のフローは、これで完了です。次は2つ目のフロー作成ですが、これは下記の記事をご覧ください。

Salesforceの最近記事

  1. Salesforceで関連リストのテキストを取得して項目に格納する方法

  2. Salesforceの商談名の命名ルールを自動設定して業務効率を向上させる方法

  3. クローズした商談を自動でロックする方法

  4. Account EngagementフォームからSalesforceへの同期方法の変更点と…

  5. Salesforceでプロファイルと権限セットを活用してアクセス権限を設定する方法

関連記事

プログラミング言語の人気オンラインコース
ブラックフライデーセール 対象コースが最大95%OFF
プロフィール
●氏名:ARAKAN
●年齢:32歳
●居住地:九州
●勤務先:情報システム部
●一言:とある企業でSalesforce管理者として勤務しているARAKANです。業務の中での気づきやTipsを投稿しています。
<保有資格>
・Salesforce認定 アドミニストレーター
・Salesforce認定 上級アドミニストレーター
・Salesforce認定 Sales Cloudコンサルタント
・Salesforce認定 Service Cloudコンサルタント
・Salesforce認定Marketing Cloud Account Engagement コンサルタント
・Salesforce認定Marketing Cloud Account Engagement スペシャリスト
カレンダー
2025年6月
 1
2345678
9101112131415
16171819202122
23242526272829
30 
ITとソフトウェアの人気オンラインコース
言語切り替え
PAGE TOP