2023.12.11

フローのみでメール文面にレコード一覧を表示させる小技

Just a moment... (30556)

はじめに

こんにちは!
先日、とあるお客様から「条件に当てはまるレコード一覧をメールに載せてほしい」という旨のお話がありました。私自身このいただいたご要望をフローで実装するイメージがつかなく、「コードを書く感じか?」と少し身構えたのですが、最終的にフローのみで抜かりなく対応ができました。今回は、この実装方法を記事にまとめたいと思います。

完成画面

最終的に作成するフローと送信されるメール文面は以下の図のようになります。

処理の流れ

フローを構築していく際の処理の順番は、ざっくり以下のようになります。
特に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
保存するレコード数:全てのレコード
その後、フローの中の「決定」を利用して取得したレコードが1件以上あるかどうかをチェックします。1件以上ある場合、次に進みます。
以下の条件でチェックします。

表示ラベル:レコード件数確認
API参照名:CheckRecordsCount
リソース:GetProjectRecords
演算子:null
値:False

2、取得したレコードをループ

条件に該当するレコードを1件ずつループさせます。(ループ内での処理はこの後説明します。)
フロー内の「ループ」を利用します。
以下の条件でループします。

表示ラベル:プロジェクトレコード件数分ループ
API参照名:LoopProjectRecords
コレクション変数:GetProjectRecords

3、レコードの値が記載されたテキストテンプレートを変数に追加

〇下準備
ループ処理で利用するテキストテンプレート1つと変数2つを作成します。

・デフォルト値が「空文字」の変数を作成します。
以下の条件で作成してください。

リソース種別:変数
API参照名:GlobalConstantEmptyString
データ型:テキスト
デフォルト値:{!$GlobalConstant.EmptyString}

※この後使用するテキストテンプレートで利用します。
※ちなみに、空文字とNullの違いをまとめてくれた記事が過去にありました。よければ以下の記事も併せてお読みください。

・テキストテンプレートを作成します。
以下の条件で作成してください。

リソース種別:テキストテンプレート
API参照名:ProjectTemplate
本文:プレーンテキストとして表示
文面:下図のように以下文面を配置
~~~~~~~~~~~~~~
・プロジェクト名:{!LoopProjectRecords.ProjectName__c}
 状況:{!LoopProjectRecords.status__c}
 担当者名:{!LoopProjectRecords.PersonInCharge__c}
{!GlobalConstantEmptyString}
~~~~~~~~~~~~~~

★★ここで気を付けていただきたい部分が以下2つです。★★
・最後に空文字({!GlobalConstantEmptyString})を入れないと、メール文面で表示した際にレコードごとに改行してくれません。とても大事なところですので忘れずに空文字を入力してください。
・空文字({!GlobalConstantEmptyString})はテキストテンプレート内では直接選択できません。変数などに格納してからテキストテンプレートで使用してください。

・ループ内でテキストテンプレートを追加する先のリストを作成します。
以下の条件で作成してください。

API参照名:ProjectList
データ型:テキスト

※テキストテンプレートを追加するための変数であり、レコードを追加するわけではないです。「複数の値を許可(コレクション)」はチェックしないでください!

〇割り当て
ループ内で作成したテキストテンプレートを変数内で追加していきます。
フロー内の「割り当て」を利用してください。
以下の条件で作成してください。

変数:ProjectList
表示ラベル:レコードをテンプレートに追加
API参照名:Add_ProjectTemplate
演算子:追加
値:ProjectTemplate

※ここの処理が超大事です!

4、メール送信

最後にメール送信します。

〇下準備
メールで利用するためのテキストテンプレート2つと定数1つを作成します。

・件名として利用するためのテキストテンプレートを作成します。
以下の条件で作成してください。

リソース種別:テキストテンプレート
API参照名:MailSubjectText
本文:プレーンテキスト
文面:[SF]要確認のプロジェクトの状況

・受信者アドレスリストとして利用するための定数を作成します。
以下の条件で作成してください。

リソース種別:定数
API参照名:MailAddress
値:任意のメールアドレス

・本文として利用するためのテキストテンプレートを作成します。
以下の条件で作成してください。

リソース種別:テキストテンプレート
API参照名:MailBodyText
本文:プレーンテキスト
文面:下図のように以下文面を記載
~~~~~~~~~~~~~
関係者各位

要確認プロジェクトの状況は以下になります。
ご確認お願いいたします。

{!ProjectList}
~~~~~~~~~~~~

※この{!ProjectList}にレコードがテキストテンプレートとして、リスト形式となって格納されています。そのため、これだけでレコード一覧が表示されます。

〇メールアクションを利用
フロー内の「アクション」から「メールを送信」を利用。
以下の条件で作成してください。

表示ラベル:要確認プロジェクトのメール送信
API参照名:SendMail
件名:{!MailSubjectText}
受信者アドレスリスト:{!MailAddress}
本文:{!MailBodyText}

まとめ

今回はコードに頼らずフローのみメール文面にレコード一覧を表示させる小技をご紹介しました。一工夫すれば大抵のことはフローで対応できるため、あきらめずにフロー画面をポチポチしていただければと思います。
この記事が、似たような課題でお悩みの方の一助になれば幸いです!
31 件
     
  • banner
  • banner

関連する記事