・フローアクション「メールを送信」について
・メールアラートの作成
・メールアラートと「メールを送信」の比較
フローでメールを送信する方法が2つあります。「メールを送信」アクションはそのうちのフローコアアクションの一つです。
他の手段としてはフロー上でワークフローアクション「アラートメール」を起動する方法があります。両者とも「メールを送信する」と言う根本的な機能については同じです。
直近ではSummer '24のアップデートで「メールを送信」アクションが強化され、タイトルや本文にスレッドトークンが挿入できるようになり、トークンに紐づいたメールの管理が可能となりました。
Salesforceを触り始めて間もない初学者の方や、初めてメールを送信するフローを作成する方を想定しています。
メールアラートを代替するフローアクション「メールを送信」があることはなんとなく知っていました。しかし、実際に作成をしてみると思った以上に苦労をしたため、自身の備忘録 兼 同じ問題で困っている方に向けて記事を書こうと思いました。
以下のフローを作成していきます。
ケース所有者が変更されたら、新所有者に対してメールを送信するシンプルなフローを2種作成します。
1つ目はメールアラートを使用、2つ目は「メールを送信」アクションを使用していきます。
ケースの所有者(OwnerId)が変更されたらトリガーされるシンプルなレコードトリガーフロー。
ケースオブジェクトに新たに選択リスト項目を作成し、項目の選択内容によって2つのアクションを分岐させます。
メールアラート用のメールテンプレートを作成します。ここは難しい部分では無いので詳細は割愛します。上画像のように作成しました!テンプレート文章内には赤下線部のようにケース所有者名やケースIDなどの差し込みを行なっています。
上記のように表記方法が異なります。それぞれに対応した記述を行いましょう。
設定 → 左クイック検索「アラート」 → 「メールアラート」 → 「新規メールアラート」で以下の画面を開きます。
ここも設定にはそんなに苦労はしないと思うので詳細は割愛します。テンプレートを選ぶ項目では、上記で作成したメールテンプレートを選択してください。
上記の「トリガー条件」で設定した内容をベースにメールアラートを追加します。ここもそんなに難しく無いので詳細は割愛します。「カスタムオブジェクトID」には、フローをトリガーしたケースレコードを参照したいため、「{!$Record.Id}」としています。
画像のようなシンプルなフローが出来上がりました。有効化して試しに適当なケースの所有者を変更してみましょう。
私の場合、Trailheadのplayground組織上にある適当なケースを変更し、以下のようなメールが送られてきました。差し込みも行われており無事成功のようです。
ここから本題の「メールを送信」アクションの作成に入ります。冒頭で記載した通り、メールアラートと「メールを送信」アクションの実行を分岐させたいため、ケースオブジェクトに上記のような選択リスト項目を追加しています。
※ここは個人的な検証用に追加した項目なので、必要ない方は無視してください。
分岐「メールの送信を使用」にメール送信アクションを追加します。アクションを選択後に表示される検索ボックスで「mail」と入力すると「メールを送信」が表示されます。
「選択したアクションの入力値を設定」欄でアクションに対する設定項目が表示されています。それぞれの項目の利用方法ついては、ここに記載するよりも以下の公式文書をご確認頂いた方がより理解が深まるかと思います。
Salesforceサクセスナビ「アクション「メールを送信」要素の設定内容」
ここからは作成時の失敗例と成功例を交えて記載をしていきます。合計で4パターンの作成をしています。
Salesforce DevToolsからメールテンプレートオブジェクトを開き、正しいIDが確認できました。それぞれの環境に応じてIDは異なるので、確認したIDをメールテンプレートID設定項目に入力しましょう。
フローをトリガーしたケースレコードの所有者にメールを送りたいため、「{!$Record.OwnerId}」と入力しました。
一旦、これでフローをトリガーしてみます。
あれ?差し込み部分がブランクになってしまっていますね・・・。メールテンプレートを確認したところ、差し込み部分の記載方法が間違っていました。フローに対応した形式にするため「Case」の部分を「$Record」に置き換えてみました。
ケースの所有者が{!Case.OwnerFullName}に変更されました。
ケース:https://cunning-bear-jypq1m-dev-ed.trailblaze.lightning.force.com/lightning/r/Case/{!$Record.Id}/view
件名:{!Case.Subject}
割り当て日時:{!Case.LastModifiedDate}
ケースの所有者が{$Record.OwnerFullName}に変更されました。
ケース:https://cunning-bear-jypq1m-dev-ed.trailblaze.lightning.force.com/lightning/r/Case/{!$Record.Id}/view
件名:{!$Record.Subject}
割り当て日時:{!$Record.LastModifiedDate}
しかし、再度送信してみても差し込みが実行されない結果に。公式文書を見てみると以下のような記載がありました。
関連レコードIDまた、[メールテンプレート ID] が含まれている場合、このパラメータは、メールテンプレートの差し込み項目で利用する受信者以外のレコードの ID です。なお、[受信者 ID] に入力した ID がリードレコードの場合は、このパラメータは使用できません。
引用元:Salesforceサクセスナビ「アクション:メールを送信」
関連レコードID欄に「!$Record.Id」と入力し再度挑戦してみます。すると「今度はUserIdを使用しメールを送る場合は、使用できない」という内容のエラーが発生しました。
そこで試しに受信者 ID欄をユーザーID「{!$Record.OwnerId}」から取引先責任者のID「{!$Record.ContactId}」にしてデバックを実行するとエラーにはなりませんでした。
もう一度公式に戻り確認をしてみます。
受信者ID
リード、取引先責任者、または個人取引先レコードのIDを指定します。メールテンプレートを使用する場合はこの項目のは必須です。[メールテンプレート ID] が含まれている場合、このパラメータはメールを送信して受信者差し込み項目に入力される個人の ID です。[送信時にメールを記録] が含まれている場合、このパラメータはメールを送信して記録する個人の IDとして利用されます。※なお、個人取引先を指定する場合は取引先オブジェクトの[PersonContactId]項目を指定してください。
引用元:Salesforceサクセスナビ「アクション:メールを送信」
ハッキリ書いてありました。受信者IDにはユーザーオブジェクトに存在するUser.Idは使用することができず、それ以外の「リード、取引先責任者、または個人取引先レコードのid」は使用可能ということのようです。
メールテンプレートを使用して「メールを送信」アクションを使うためには受信者IDは必須項目となり、受信者IDにはUser.Idは使用できないためメールテンプレートも使用できない状態となってしまいました。
平たく言ってしまうと現状では「社内ユーザー」に対してはこのアクションは使用できない、という状態のようですね。
どうしても社内ユーザーに対してメールを送付したかったので、代替案について検討をしてみました。
受信者ID欄の入力を削除し、代わりに受信者アドレスリスト欄に社内ユーザーのメールアドレス「{!$Record.Owner:User.Email}」としてみたところ、、、エラーは起こりませんでした!
ただし、上記のように受信者IDの代わりに受信者アドレスリストを使用したため、TRY1回目で記載したとおり、メールテンプレートIDを指定できません。(テンプレートを使用するためにはUser.Id以外の受信者IDを指定する必要があるため)
そこで、架空の取引先責任者を作成し受信者IDに設定、受信者IDさえ設定してしまえばメールテンプレートIDを指定できるようになるため使用したいIDを設定。
最終的に以下の内容でフローを実行しました。無理矢理な感じが否めませんね笑
無事メールが送信されました!しかし当然ですがダミーで作成した取引先責任者のメールアドレスは表示されてしまいますね。
意図的に宛先へダミー取引先責任者を設定したとはいえ、やはり宛先に関係のない送付先が含まれているのはとても気持ちが悪い・・・。そのため、別の方法も試してみました。
メールテンプレートをどうにか使用する方法が無いか試行錯誤をしてみました。これまでの結果で
上記を踏まえて、以下のことができないか確認を行いました。
しかし、差し込み部分が反映することができませんでした。
(色々試してみましたが、数式を利用して差し込み部分を強制的に表現しても、差し込みはされないようでした・・・)
メールテンプレートは使用できませんが、恐らくこちらが最善策だと思います。
上記でメールを送信してみると無事差し込みが反映されていました。
上記の結果から、もしフローで「メールアラート」と「メールを送信」のどちらを使用するのか迷った際は、送信先が「社内ユーザー」なのか、それとも「取引先責任者やリードなど、社外」なのかで判断が分かれそうですね。以下、簡単な比較表になります。
フロー上でメールを送信する方法としてメールアラートと「メールを送信」アクションを検討してみましたが、現時点では使い勝手の良いメールアラートを使用するのが間違いなさそうです。
「メールを送信」アクションを使用する際は、送付先がリード、取引先責任者、または個人取引先に限定される場合にのみ使用した方が良いでしょう。