via pixabay.com
はじめに
こんにちは!
先日、とあるお客様から「条件に当てはまるレコード一覧をメールに載せてほしい」という旨のお話がありました。私自身このいただいたご要望をフローで実装するイメージがつかなく、「コードを書く感じか?」と少し身構えたのですが、最終的にフローのみで抜かりなく対応ができました。今回は、この実装方法を記事にまとめたいと思います。
先日、とあるお客様から「条件に当てはまるレコード一覧をメールに載せてほしい」という旨のお話がありました。私自身このいただいたご要望をフローで実装するイメージがつかなく、「コードを書く感じか?」と少し身構えたのですが、最終的にフローのみで抜かりなく対応ができました。今回は、この実装方法を記事にまとめたいと思います。
完成画面
最終的に作成するフローと送信されるメール文面は以下の図のようになります。
処理の流れ
フローを構築していく際の処理の順番は、ざっくり以下のようになります。
特に2、3での「テキストテンプレートの利用」と「ループ処理」の組み合わせが今回の肝になります。
1、条件に該当するレコードを取得
2、取得したレコードをループ
3、レコードの値が記載されたテキストテンプレートを変数に追加
4、メール送信
以下、『プロジェクトオブジェクト内で「要確認」項目がTrueになっているレコード(プロジェクト名、状況、担当者名)一覧を毎週メール文面に載せて送信する』というシナリオで実際にフローを作成していきます。もし余裕のある方は実際の組織で「プロジェクト(Project__c)」オブジェクトと以下の項目を作成して、実際にフローの作成に取り掛かっていただければ幸いです!
特に2、3での「テキストテンプレートの利用」と「ループ処理」の組み合わせが今回の肝になります。
1、条件に該当するレコードを取得
2、取得したレコードをループ
3、レコードの値が記載されたテキストテンプレートを変数に追加
4、メール送信
以下、『プロジェクトオブジェクト内で「要確認」項目がTrueになっているレコード(プロジェクト名、状況、担当者名)一覧を毎週メール文面に載せて送信する』というシナリオで実際にフローを作成していきます。もし余裕のある方は実際の組織で「プロジェクト(Project__c)」オブジェクトと以下の項目を作成して、実際にフローの作成に取り掛かっていただければ幸いです!
項目の表示ラベル | API参照名 | データ型 | 選択リスト値 |
プロジェクト名 | ProjectName__c | テキストエリア | |
状況 | status__c | 選択リスト | オンスケ;遅延(1週間以内);遅延(1週間以上);遅延(1か月以上) |
担当者名 | PersonInCharge__c | テキスト | |
要確認 | Check__c | チェックボックス |
1、条件に該当するレコードを取得
スケジュールトリガフローを選択した後、最初に条件に該当するレコードを取得します。
フローの中の「レコードを取得」を利用します。ここでレコードを取得するための条件を入力して保存してください。
今回は以下の条件で取得します。
表示ラベル:プロジェクトレコード取得
API参照名:GetProjectRecords
オブジェクト:プロジェクト
条件:要確認(Check__c)の値がTrue
保存するレコード数:全てのレコード
フローの中の「レコードを取得」を利用します。ここでレコードを取得するための条件を入力して保存してください。
今回は以下の条件で取得します。
表示ラベル:プロジェクトレコード取得
API参照名:GetProjectRecords
オブジェクト:プロジェクト
条件:要確認(Check__c)の値がTrue
保存するレコード数:全てのレコード
その後、フローの中の「決定」を利用して取得したレコードが1件以上あるかどうかをチェックします。1件以上ある場合、次に進みます。
以下の条件でチェックします。
表示ラベル:レコード件数確認
API参照名:CheckRecordsCount
リソース:GetProjectRecords
演算子:null
値:False
以下の条件でチェックします。
表示ラベル:レコード件数確認
API参照名:CheckRecordsCount
リソース:GetProjectRecords
演算子:null
値:False
2、取得したレコードをループ
条件に該当するレコードを1件ずつループさせます。(ループ内での処理はこの後説明します。)
フロー内の「ループ」を利用します。
以下の条件でループします。
表示ラベル:プロジェクトレコード件数分ループ
API参照名:LoopProjectRecords
コレクション変数:GetProjectRecords
フロー内の「ループ」を利用します。
以下の条件でループします。
表示ラベル:プロジェクトレコード件数分ループ
API参照名:LoopProjectRecords
コレクション変数:GetProjectRecords
3、レコードの値が記載されたテキストテンプレートを変数に追加
〇下準備
ループ処理で利用するテキストテンプレート1つと変数2つを作成します。
・デフォルト値が「空文字」の変数を作成します。
以下の条件で作成してください。
リソース種別:変数
API参照名:GlobalConstantEmptyString
データ型:テキスト
デフォルト値:{!$GlobalConstant.EmptyString}
※この後使用するテキストテンプレートで利用します。
※ちなみに、空文字とNullの違いをまとめてくれた記事が過去にありました。よければ以下の記事も併せてお読みください。
ループ処理で利用するテキストテンプレート1つと変数2つを作成します。
・デフォルト値が「空文字」の変数を作成します。
以下の条件で作成してください。
リソース種別:変数
API参照名:GlobalConstantEmptyString
データ型:テキスト
デフォルト値:{!$GlobalConstant.EmptyString}
※この後使用するテキストテンプレートで利用します。
※ちなみに、空文字とNullの違いをまとめてくれた記事が過去にありました。よければ以下の記事も併せてお読みください。
【Salesforce フロー】とは?初心者なら知っておきたい5つのテク - TerraSkyBase | テラスカイを支える人とテクノロジーの情報を発信する基地局
Salesforceフローとは、Salesforce上で独自のプロセス処理が作成できるプログラムです。Salesforce フローを利用するとプログラムを書かなくても独自のプロセス処理の作成ができます。フローを使いこなすうえで知っておきたい5つポイントご紹介します。
・テキストテンプレートを作成します。
以下の条件で作成してください。
リソース種別:テキストテンプレート
API参照名:ProjectTemplate
本文:プレーンテキストとして表示
文面:下図のように以下文面を配置
~~~~~~~~~~~~~~
・プロジェクト名:{!LoopProjectRecords.ProjectName__c}
状況:{!LoopProjectRecords.status__c}
担当者名:{!LoopProjectRecords.PersonInCharge__c}
{!GlobalConstantEmptyString}
~~~~~~~~~~~~~~
★★ここで気を付けていただきたい部分が以下2つです。★★
・最後に空文字({!GlobalConstantEmptyString})を入れないと、メール文面で表示した際にレコードごとに改行してくれません。とても大事なところですので忘れずに空文字を入力してください。
・空文字({!GlobalConstantEmptyString})はテキストテンプレート内では直接選択できません。変数などに格納してからテキストテンプレートで使用してください。
以下の条件で作成してください。
リソース種別:テキストテンプレート
API参照名:ProjectTemplate
本文:プレーンテキストとして表示
文面:下図のように以下文面を配置
~~~~~~~~~~~~~~
・プロジェクト名:{!LoopProjectRecords.ProjectName__c}
状況:{!LoopProjectRecords.status__c}
担当者名:{!LoopProjectRecords.PersonInCharge__c}
{!GlobalConstantEmptyString}
~~~~~~~~~~~~~~
★★ここで気を付けていただきたい部分が以下2つです。★★
・最後に空文字({!GlobalConstantEmptyString})を入れないと、メール文面で表示した際にレコードごとに改行してくれません。とても大事なところですので忘れずに空文字を入力してください。
・空文字({!GlobalConstantEmptyString})はテキストテンプレート内では直接選択できません。変数などに格納してからテキストテンプレートで使用してください。
・ループ内でテキストテンプレートを追加する先のリストを作成します。
以下の条件で作成してください。
API参照名:ProjectList
データ型:テキスト
※テキストテンプレートを追加するための変数であり、レコードを追加するわけではないです。「複数の値を許可(コレクション)」はチェックしないでください!
以下の条件で作成してください。
API参照名:ProjectList
データ型:テキスト
※テキストテンプレートを追加するための変数であり、レコードを追加するわけではないです。「複数の値を許可(コレクション)」はチェックしないでください!
〇割り当て
ループ内で作成したテキストテンプレートを変数内で追加していきます。
フロー内の「割り当て」を利用してください。
以下の条件で作成してください。
変数:ProjectList
表示ラベル:レコードをテンプレートに追加
API参照名:Add_ProjectTemplate
演算子:追加
値:ProjectTemplate
※ここの処理が超大事です!
ループ内で作成したテキストテンプレートを変数内で追加していきます。
フロー内の「割り当て」を利用してください。
以下の条件で作成してください。
変数:ProjectList
表示ラベル:レコードをテンプレートに追加
API参照名:Add_ProjectTemplate
演算子:追加
値:ProjectTemplate
※ここの処理が超大事です!
4、メール送信
最後にメール送信します。
〇下準備
メールで利用するためのテキストテンプレート2つと定数1つを作成します。
・件名として利用するためのテキストテンプレートを作成します。
以下の条件で作成してください。
リソース種別:テキストテンプレート
API参照名:MailSubjectText
本文:プレーンテキスト
文面:[SF]要確認のプロジェクトの状況
・受信者アドレスリストとして利用するための定数を作成します。
以下の条件で作成してください。
リソース種別:定数
API参照名:MailAddress
値:任意のメールアドレス
・本文として利用するためのテキストテンプレートを作成します。
以下の条件で作成してください。
リソース種別:テキストテンプレート
API参照名:MailBodyText
本文:プレーンテキスト
文面:下図のように以下文面を記載
~~~~~~~~~~~~~
関係者各位
要確認プロジェクトの状況は以下になります。
ご確認お願いいたします。
{!ProjectList}
~~~~~~~~~~~~
※この{!ProjectList}にレコードがテキストテンプレートとして、リスト形式となって格納されています。そのため、これだけでレコード一覧が表示されます。
〇下準備
メールで利用するためのテキストテンプレート2つと定数1つを作成します。
・件名として利用するためのテキストテンプレートを作成します。
以下の条件で作成してください。
リソース種別:テキストテンプレート
API参照名:MailSubjectText
本文:プレーンテキスト
文面:[SF]要確認のプロジェクトの状況
・受信者アドレスリストとして利用するための定数を作成します。
以下の条件で作成してください。
リソース種別:定数
API参照名:MailAddress
値:任意のメールアドレス
・本文として利用するためのテキストテンプレートを作成します。
以下の条件で作成してください。
リソース種別:テキストテンプレート
API参照名:MailBodyText
本文:プレーンテキスト
文面:下図のように以下文面を記載
~~~~~~~~~~~~~
関係者各位
要確認プロジェクトの状況は以下になります。
ご確認お願いいたします。
{!ProjectList}
~~~~~~~~~~~~
※この{!ProjectList}にレコードがテキストテンプレートとして、リスト形式となって格納されています。そのため、これだけでレコード一覧が表示されます。
〇メールアクションを利用
フロー内の「アクション」から「メールを送信」を利用。
以下の条件で作成してください。
表示ラベル:要確認プロジェクトのメール送信
API参照名:SendMail
件名:{!MailSubjectText}
受信者アドレスリスト:{!MailAddress}
本文:{!MailBodyText}
フロー内の「アクション」から「メールを送信」を利用。
以下の条件で作成してください。
表示ラベル:要確認プロジェクトのメール送信
API参照名:SendMail
件名:{!MailSubjectText}
受信者アドレスリスト:{!MailAddress}
本文:{!MailBodyText}
まとめ
今回はコードに頼らずフローのみメール文面にレコード一覧を表示させる小技をご紹介しました。一工夫すれば大抵のことはフローで対応できるため、あきらめずにフロー画面をポチポチしていただければと思います。
この記事が、似たような課題でお悩みの方の一助になれば幸いです!
この記事が、似たような課題でお悩みの方の一助になれば幸いです!
31 件