Salesforceで選択リストで選ばれた値によって返す値を変えたい時どうすればいいでしょうか?そんな時は数式項目を使用すれば簡単に実装することができます!
前回、【ISPICVAL】を使用した方法をご紹介させていただきましたが、もっと簡単にできる方法がありますので、ご紹介させていただきます。それは数式項目の【CASE関数】を使用した方法です。今回も前回と同じく作るのは、スタバのメニューの商品を選択リストから選んだ時に、それぞれの商品の値段が返ってくるような仕組みを作ります。
選択リストを作成する
まずは、実装したいオブジェクトに選択リストを作成していきます。【項目とリレーション】で「新規」作成します。
【ステップ1データ型の選択】データ型を「選択リスト」にします。
【ステップ2詳細を入力】【項目の表示ラベル】を「商品」にし、【値】を「各値を改行で区切って入力します。」に変更します。【項目名(API名)】は「ProductType」と設定します。
そしてその下の空欄ボックスに選択リストで表示したい値を改行で区切って入力します。そこで作成されたものはこのようになります。
※例に沿った形だと、ここで都道府県の選択リストを作成します。
数式項目を作成する
次に、選ばれた商品によってそれぞれの商品の値段を返す数式を作成していきます。先ほどと同じように【項目とリレーション】で「新規」を押します。
【ステップ1データ型の選択】今回はデータ型を「数式」にします。
【ステップ2出力型の選択】今回は、【項目の表示ラベル】を「値段」にし、【項目名(API名)】を「Price」と設定します。そして、【数式の戻り値のデータ型】を「通貨」に設定します。値段などの金額は小数点を使用しないため、画面下部の小数点の位置は「0」にしましょう。
【ステップ3数式の入力】数式の入力を行います。ここで使う数式はCASE関数を使用します。
CASE関数はCASE(式, value1, result1, value2, result2,…,else_result)を入力し、式を一連の値に照らして確認します。 式がいずれの値とも等しい場合には、対応する結果が返されます。いずれかの値と等しくない場合には、別の結果が返されます。
では実際に数式を入力していきます。
CASE(TEXT(ProductType__c),
"抹茶クリームフラペチーノ",520,
"スターバックスラテ",430,
"バニラクリームフラペチーノ",540,
"ほうじ茶ティーラテ",500,
"抹茶ティーラテ",500,
"キャラメルマキアート",490,
"ホワイトモカ",390,
0)
今回の【CASE関数】を使用したら簡単な式にまとまります。これは簡単に説明すると、式の部分がTEXT(ProductType__c)つまり、商品の選択リストです。
※例に沿った形だと、北海道を入れたら北海道、青森を入れたら東北、秋田を入れたら東北 etc…となるように設定していきます。
そして、value1(コーヒーフラペチーノ)が選ばれたら、result1(‘520’)を返して、value2(スターバックスラテ)が選ばれたら、result2(‘430’)を返して、value3(バニラクリームフラペチーノ)が選ばれたら・・・と繰り返し、どれとも違ったら(else_result)’0’を返すよという内容です。
実際の画面で確認してみると・・・
このようにキャラメルマキアートが選択されたら自動的に値段が¥490と入力されています。
最後に・・・
今回は【CASE関数】を使用して選択された値によって返す値を変える方法を実装しました。前回の【IF関数】と【ISPICVAL】を使用したやり方よりもシンプルでわかりやすいですね。数式にはいろいろなやり方があるのだなあと感じさせられました。