【Salesforce】プログラミング無しでもプロセスビルダーとフローを使えば結構イケる
前提条件:私Apexなんとなく読めますが書けません。GUIで色々出来ると助かります。という人向け。
自分の中で一つブレークスルー的発見をしたのでシェア。
プロセスビルダーとフローです。
セールスフォースには、ワークフロールールと言って、これがこうなったらこうする。みたいなルールをGUIで設定することが出来て非常に重宝していました。
が、これには限界があって、例えば
メールアドレスを受け取って、そのメールアドレスからレコードを検索してきてこのカラムに入れる
とか
オブジェクトと言って、まあひとつのデータのまとまりみたいなものがあるのですが、オブジェクトAにこんな条件のデータが入ってきたら、オブジェクトBにオブジェクトAの必要な情報を抜き出して新規レコードを作成する。みたいなオブジェクトをまたがった操作
みたいなものが出来ませんでした。
最初の奴で言えば、
例えば、メールtoケースで社員のメールを受け取って、メールアドレスから社員アカウントのIdを検索してきて所有者を変更する。みたいな事ができませんでした。
次の奴で言えば、先ほど作ったケースから、日報みたいなオブジェクトにデータをコピーする、みたいな事が出来ませんでした。オブジェクトAの項目を変数xに入れて、オブジェクトBの項目cに代入するみたいなことが出来ないんですね。
そこで使うのがプロセスビルダーとフロー。
利用シーンとしては、
- Googleカレンダーに書かれている本日の予定をスクリプトで抜き出してメールを送ります
- メールの送信先をメールtoケースにしておきます
- ケースで受け取ったら、プロセスビルダーが起動するように設定しておきます
- 次に、フローでケースに格納されるWebメールという所に入っている送信者メールアドレスを取得します
- 取得したメールアドレスを元に、アカウントIDを検索し、取得します
- 次に、本日の予定というオブジェクトを作り、その中に予定詳細というカスタム項目をロングテキストエリアで作ります
- 本日の予定オブジェクトにデータを新規作成し、先ほど取得したケースのデータであるアカウントIDを所有者IDに入れ、メールの本文を予定詳細の中に入れます
- これで完成
1はまあなんでも良いでしょう。適当にやってください。
2はメールtoケースの設定をしてください。
3はプロセスビルダーで実現します

ケースの発生源を特定して、そのケースが作られた場合にこのプロセスが起動するように設定します。
4はフローで実現します

こんな感じに設定しましょう。

この画像で言うと、ケースの発生源をメールtoケースで「本日の予定」と設定したのでそれに限定。結果の並び替え基準に最終更新日(作成日でもいいんですけどね)でソートし、降順にする事で最新のデータを取得します。SuppliedEmailを変数を新規作成して email_tmpとか(適当)に入れ、Descriptionも同様に変数 Descriptionに入れておきます。変数はデフォルトの設定では入力/出力種別が非公開になっていますので、これを変えましょう。非公開だと後で使えません。入力及び出力としておけば問題ないかと思います。

次に、IDを取得します。Userを検索しましょう。User.Emailを先ほどの email_tmpで検索します。恐らくUserのEmailは一意でしょうから結果の並び替えは要りません。検索して出てきたアカウントのIdをこれまた変数を新規に作って(僕はAccountIDとしてしまいましたが、普通にUserIdでいいですね)その中に格納しましょう。

最後にレコードの作成をしましょう。本日の予定というカスタムオブジェクトのレコードのOwnerIdには、先ほど取ってきたAccountIDを指定して代入。詳細にはDescriptionを代入。このオブジェクトには他にも使っているのでtypeという部分に本日の予定と入れていますが、これは無くても構いません。これでレコードが新規作成されました。
本当は最後に、メール送信でSlackに投げたかったのですが、メール送信をemail_tmpにしても何故かそうならないというバグっぽいのがあったので諦めました。
ここまでやったらフローを保存して有効化してください。
プロセスビルダーに戻って、ルール適用時のアクションにフローを指定。先ほど作ったフローを選んでプロセスを有効化すれば実行されます。
プロセスのエラーについてはメールでログが届きます。実行ログがどこにあるのかわからないので問い合わせ中。
ここまでやってみて思ったこと
今までApex書かないと出来ないと出来無いなーみたいに思っていたことが結構解消される気がする。
今まで誰も教えてくれなかったので驚いたよ!サポートに問い合わせても基本的に開発案件に寄せられているのだけど、こちらでやってみてよとオススメしてくれても良いんじゃないかなと思う。
ああ、すっきりした。