Salesforceで選択リストで選ばれた値によって返す値を変えたい時どうすればいいでしょうか?そんな時は数式項目を使用すれば簡単に実装することができます!

一番簡単なやり方は【CASE関数】を使用する方法なのですが、今回は数式項目の中の【ISPICVAL】を使用して実装して見ようと思います。今回作るのは、スタバのメニュー選択リストで選んだ時に、それぞれの商品の値段が返ってくるような仕組みを作ります。

選択リストを作成する

まずは、実装したいオブジェクトに選択リストを作成していきます。【項目とリレーション】で「新規」作成します。

ステップ1データ型の選択】データ型を「選択リスト」にします。

ステップ2詳細を入力】【項目の表示ラベル】を「商品」にし、【値】を「各値を改行で区切って入力します。」に変更します。【項目名(API名)】は「ProductType」と設定します。

そしてその下の空欄ボックスに選択リストで表示したい値を改行で区切って入力します。そこで作成されたものはこのようになります。

数式項目を作成する

次に、選ばれた商品によってそれぞれの商品の値段を返す数式を作成していきます。先ほどと同じように【項目とリレーション】で「新規」を押します。

ステップ1データ型の選択】今回はデータ型を「数式」にします。

ステップ2出力型の選択】今回は、【項目の表示ラベル】を「値段」にし、【項目名(API名)】を「Price」と設定します。そして、【数式の戻り値のデータ型】を「通貨」に設定します。値段などの金額は小数点を使用しないため、画面下部の小数点の位置は「0」にしましょう。

ステップ3数式の入力】数式の入力を行います。ここで使う数式はIF関数とISPICVAL関数を使用します。

IF関数はIF (条件文, 条件文がTrueの時に返したい値, 条件文がFalseの時の値)を入力し、条件が真かどうかを確認し、TRUE の場合と FALSE の場合とで異なる値を返します。
ISPICVAL関数はISPICKVAL(選択リストのAPI名, 選択リストの値)を入力し、選択リスト項目の値が指定した文字列と等しいかどうかを判断し、TRUE or FALSEで返します。

IF関数とISPICVAL関数の詳しい使い方はこちらのサイトを参照してください。では実際に数式を入力していきます。

IF(ISPICKVAL(ProductType__c,"コーヒーフラペチーノ"),
	520, 
	IF(ISPICKVAL(ProductType__c,"抹茶クリームフラペチーノ"),
		520, 
		IF(ISPICKVAL(ProductType__c,"スターバックスラテ"),
			430, 
			IF(ISPICKVAL(ProductType__c,"バニラクリームフラペチーノ"),
				540, 
				IF(ISPICKVAL(ProductType__c,"ほうじ茶ティーラテ"),
					500, 
					IF(ISPICKVAL(ProductType__c,"抹茶ティーラテ"),
						500, 
						IF(ISPICKVAL(ProductType__c,"キャラメルマキアート"),
							490,
							IF(ISPICKVAL(ProductType__c,"ホワイトモカ"),
								390,
								0
							)
						)
					)
				)
			)
		)
	)
)

簡単に説明すると、もし【商品】選択リストでコーヒーフラペチーノが選ばれたら、’520’を返して、違う場合はスターバックスラテが選ばれたかを確認して、そうであれば’430’を返して、違う場合は・・・と繰り返しになっています。

実際の画面で確認してみると・・・

このようにキャラメルマキアートが選択されたら自動的に値段が¥490と入力されています。

最後に

今回は選択リストで選択された値によって返す値を変える方法をご紹介させていただきました。Salesforceの関数は他のプログラミング言語似ている部分もありますがSalesforce独自のものもあるので難しいですね・・・。今後も、自分自身が使い方を見返せるように投稿していきます。他の方の参考にもなれば幸いです。