non-programmers salesforce 小ネタブログ

Apexやvisualforceなどプログラミングの力を使わずにどこまでやれるか小ネタを投稿します。

salesforceでEXCELみたいなvlookupを実現する方法(ノンプログラミング)

salesforceに数式vlookupはあるのですが、入力規則でしか使えず、他オブジェクトの値を持ってくるという使い方ができません。でもsalesforce管理者の98%はvlookupみたいなことを実現したい、と考えている人も多いのではないでしょうか。

昔はapexによる開発が必要だったのですが、spring'15からフローとプロセスビルダーで実現できます。実際に手順をまとめました。

 

まずカスタムオブジェクトを作って元データを作ります。

(別にユーザや商談や取引先からデータを持ってくるでも何でもいいのですが)。

f:id:non-prog-sf:20150526174933p:plain

 次にフローを作ります。フローは設定→作成→ワークフローと承認申請→フローから作れます。

f:id:non-prog-sf:20150528232424p:plain

最初に「レコードの検索」を空白部分にドラッグ・アンド・ドロップします。
名前をつけます。名前で一度英数字の名前をつけて、一意の名前にそれが反映されてからじゃないと日本語名は入力できないです。条件と割り当ての検索は、持ってきたい情報を持っている方のオブジェクトを選びます。今回の場合は作ったカスタムオブジェクトですね。

f:id:non-prog-sf:20150528232554p:plain

条件のキーになる項目を選びます。excelのvlookupでいうところの1行目のですね。値で新規作成→変数を選びます。変数というのは、あとで説明しますが、とりあえず作ります。

f:id:non-prog-sf:20150528232642p:plain

一意の名前:なんでもいいのですが、一般的には頭に「var」を付けるようです。variableの頭文字ですね。
 データ型:項目の形式を入れてください。普通テキストでしょうか。
 入力/出力種別:検索の場合は「入力のみ」を選びます。別に「入力/出力」でも問題無いと思います、多分。
デフォルト値:空白でよいです。

f:id:non-prog-sf:20150528232843p:plain

「レコードの項目を変数に割り当ててフローで参照します。」
項目は持ってきたい項目と変数を選択します。
変数は先ほどと同様ですが、データ型を正しく選ぶこと、入力/出力種別は「入力/出力」を選んでください。

f:id:non-prog-sf:20150528232921p:plain

今回は価格を持ってきたいのでデータ型は通貨です。スケールって小数点以下のことみたいですが、あんまり気にしなくてもいいのかな?

f:id:non-prog-sf:20150528232940p:plain

次にレコードの更新をドラッグ・アンド・ドロップします。名前は何でもいいです。条件と割り当ての「更新」 はデータを入れたい方のオブジェクトを選びます。項目はキーとなる項目を、値は検索の時にキーとして設定した変数を選びます。データ型が異なると先ほど作ったものが表示されないのでお気をつけください。

 

f:id:non-prog-sf:20150528233135p:plain

「変数、定数、入力などの値を使用してレコード値を更新します。」
項目はデータを入れたい項目、値は先ほど「レコードの項目を変数に割り当ててフローで参照します。」で作った変数を選択してください。ここで入力/出力種別が「入力/出力」になっていないと選択できません。

f:id:non-prog-sf:20150528233206p:plain

これができたら、菱型のところをクリックして検索→更新に線を引いて、検索の右上の緑ボタンをクリックします。これをしないとエラーになります。

f:id:non-prog-sf:20150528233251p:plain

あとは左上から保存して有効化してください。

 

次にプロセスビルダーの設定を行います。プロセスビルダーは設定→作成→ワークフローと承認申請→プロセスビルダーで作れます。開始下の四角をクリックして開始するプロセスのタイミングを指定します。これはワークフローと一緒でどのオブジェクトのレコードの作成や更新がキーになるかというのを指定します。

f:id:non-prog-sf:20150528233502p:plain

次に菱型をクリックして絞り込み条件を選択します。名前は適当に日本語でつけてください。条件も何でもいいと思いますが、今回は対象の項目が更新されたら実行されるというルールにします。下の画像の場合、対象の項目が空白じゃなかったら実行されるということですね。

f:id:non-prog-sf:20150528233311p:plain

次に菱型でtrueだった場合のルールの適用時アクションを選択します。アクションを追加をクリックして、アクション種別を選びます。今回はフローを動かしたいのでフローを選びます。

f:id:non-prog-sf:20150528233901p:plain

アクション名は適当につけて、フローを選びます。ここで先ほど作ったフローが出てくるはずなのでそれを選んでください。出てこない場合は有効化されてない可能性があります。

フロー変数を次に選ぶのですが、これはフローのレコードの検索で最初に作った変数を選びます。そして値はvlookupで検索したい文字情報が入った項目を選びます。これの意味は、作った変数に対して、項目の情報を渡すよってことです。するとフローはこの項目情報を検索してきて、見つけたらレコードの更新をしてくれるのです。

f:id:non-prog-sf:20150528233805p:plain

 

これで完成です。プロセスビルダーの有効化も忘れないで下さいね。

 

さて動かしてみます。といってもキャプチャですが、くだもの名を入れると金額を持ってきてくれます。

f:id:non-prog-sf:20150528234446p:plain

 

excelのvlookupよりは手間がかかるのですが、apexなしでここまでの事ができてしまいます。これ、本当に便利なんで是非試してみてくださいね。