サービス
  webflow ロゴFaceMFA ロゴ

Blog

事例・ブログ
2024-06-25
Salesforce

[Salesforce]メールを送信フローアクション設定前の確認ポイント

フローアクション「メールを送信」とは?

フローでメールを送信する方法が2つあります。「メールを送信」アクションはそのうちのフローコアアクションの一つです。

他の手段としてはフロー上でワークフローアクション「アラートメール」を起動する方法があります。両者とも「メールを送信する」と言う根本的な機能については同じです。

直近ではSummer '24のアップデートで「メールを送信」アクションが強化され、タイトルや本文にスレッドトークンが挿入できるようになり、トークンに紐づいたメールの管理が可能となりました。

この記事の対象者

Salesforceを触り始めて間もない初学者の方や、初めてメールを送信するフローを作成する方を想定しています。

なぜこの記事を書こうと思ったか

メールアラートを代替するフローアクション「メールを送信」があることはなんとなく知っていました。しかし、実際に作成をしてみると思った以上に苦労をしたため、自身の備忘録 兼 同じ問題で困っている方に向けて記事を書こうと思いました。

今回実装するフロー

以下のフローを作成していきます。

フロー全体の概要

ケース所有者が変更されたら、新所有者に対してメールを送信するシンプルなフローを2種作成します。

1つ目はメールアラートを使用、2つ目は「メールを送信」アクションを使用していきます。

トリガー条件

トリガー設定

ケースの所有者(OwnerId)が変更されたらトリガーされるシンプルなレコードトリガーフロー。

ケースオブジェクトに新たに選択リスト項目を作成し、項目の選択内容によって2つのアクションを分岐させます。

メールアラートを使用したフローの作成手順

1.メールアラートを作る前に…

メールテンプレートの編集画面

メールアラート用のメールテンプレートを作成します。ここは難しい部分では無いので詳細は割愛します。上画像のように作成しました!テンプレート文章内には赤下線部のようにケース所有者名やケースIDなどの差し込みを行なっています。

[つまづきポイント]
メールテンプレートで使用する差し込み表記をそのまま「メールを送信」コンポーネントで使用することはできません。

  • メールテンプレートでケースレコードのIDを参照:{!Case.Id}
  • 「メールを送信」でケースレコードのIDを参照:{!Record.Id}

上記のように表記方法が異なります。それぞれに対応した記述を行いましょう。

2.メールアラートの作成

設定 → 左クイック検索「アラート」 → 「メールアラート」 → 「新規メールアラート」で以下の画面を開きます。

メールアラートを使用したメール送信フローで使用

ここも設定にはそんなに苦労はしないと思うので詳細は割愛します。テンプレートを選ぶ項目では、上記で作成したメールテンプレートを選択してください。

[つまづきポイント]
さっき作成したメールテンプレートが選択できない!
→ メールテンプレートの有効化チェックボタンを確認しましょう。

3.フローにメールアラートアクションを追加

上記の「トリガー条件」で設定した内容をベースにメールアラートを追加します。ここもそんなに難しく無いので詳細は割愛します。「カスタムオブジェクトID」には、フローをトリガーしたケースレコードを参照したいため、「{!$Record.Id}」としています。

画像のようなシンプルなフローが出来上がりました。有効化して試しに適当なケースの所有者を変更してみましょう。

フローメールアラートアクションを追加

私の場合、Trailheadのplayground組織上にある適当なケースを変更し、以下のようなメールが送られてきました。差し込みも行われており無事成功のようです。

「メールを送信」アクションの作成

事前準備

アクションの種類

アクションをメールの送信

ここから本題の「メールを送信」アクションの作成に入ります。冒頭で記載した通り、メールアラートと「メールを送信」アクションの実行を分岐させたいため、ケースオブジェクトに上記のような選択リスト項目を追加しています。
※ここは個人的な検証用に追加した項目なので、必要ない方は無視してください。

「メールを送信」オブジェクトの作成

分岐「メールの送信を使用」にメール送信アクションを追加します。アクションを選択後に表示される検索ボックスで「mail」と入力すると「メールを送信」が表示されます。

「選択したアクションの入力値を設定」欄でアクションに対する設定項目が表示されています。それぞれの項目の利用方法ついては、ここに記載するよりも以下の公式文書をご確認頂いた方がより理解が深まるかと思います。

Salesforceサクセスナビ「アクション「メールを送信」要素の設定内容」

実装した結果

ここからは作成時の失敗例と成功例を交えて記載をしていきます。合計で4パターンの作成をしています。

【作成1回目】とりあえず作る…結果:失敗

①メールテンプレートIDの入力

Salesforce DevToolsからメールテンプレートオブジェクトを開き、正しいIDが確認できました。それぞれの環境に応じて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へ書き換え後
ケースの所有者が{$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は使用できないためメールテンプレートも使用できない状態となってしまいました。

平たく言ってしまうと現状では「社内ユーザー」に対してはこのアクションは使用できない、という状態のようですね。

【TRY2回目】強引に受信者IDを設定…結果:成功

どうしても社内ユーザーに対してメールを送付したかったので、代替案について検討をしてみました。

受信者ID欄の入力を削除し、代わりに受信者アドレスリスト欄に社内ユーザーのメールアドレス「{!$Record.Owner:User.Email}」としてみたところ、、、エラーは起こりませんでした!

強引に受信者IDを設定した結果:成功

ただし、上記のように受信者IDの代わりに受信者アドレスリストを使用したため、TRY1回目で記載したとおり、メールテンプレートIDを指定できません。(テンプレートを使用するためにはUser.Id以外の受信者IDを指定する必要があるため)

そこで、架空の取引先責任者を作成し受信者IDに設定、受信者IDさえ設定してしまえばメールテンプレートIDを指定できるようになるため使用したいIDを設定。

最終的に以下の内容でフローを実行しました。無理矢理な感じが否めませんね笑

メールアラートで使用しているテンプレートを設定、フローをトリガーするケースIDを指定、架空で作成した取引先責任者IDを指定

無事メールが送信されました!しかし当然ですがダミーで作成した取引先責任者のメールアドレスは表示されてしまいますね。

ケース所有権が変更されました

意図的に宛先へダミー取引先責任者を設定したとはいえ、やはり宛先に関係のない送付先が含まれているのはとても気持ちが悪い・・・。そのため、別の方法も試してみました。

【TRY3回目】数式を使って差し込み部分を置換…結果:失敗

メールテンプレートをどうにか使用する方法が無いか試行錯誤をしてみました。これまでの結果で

  • 社内ユーザーにメールを送るためには受信者IDを指定する以外に「受信者アドレスリスト」を使用可能。
  • ただし、メールテンプレートを使用するためには受信者IDの指定が必要。
  • メールテンプレートの差し込み部分を「!Case.Id」→「$Record.Id」のように修正する必要がある。

上記を踏まえて、以下のことができないか確認を行いました。

  • メールテンプレートIDの代わりにメールテンプレートオブジェクトから該当のテンプレートレコードを取得
  • 取得したメールテンプレート本文の差し込み表記を数式:SUBSTITUTE({!getEmailtemplate.Body}, "Case", "$Record")で置換
  • テキストテンプレート変数へ置換した内容を格納して送信

しかし、差し込み部分が反映することができませんでした。

(色々試してみましたが、数式を利用して差し込み部分を強制的に表現しても、差し込みはされないようでした・・・)

ケース所有権が変更されました

【TRY4回目】メールテンプレートを使用しない…成功

メールテンプレートは使用できませんが、恐らくこちらが最善策だと思います。

  • メールテンプレート文章をテキストテンプレートへ直接コピペ。(差し込み欄のCase部分を$Recordへ修正してください)
  • 作成したテキストテンプレートを「メールを送信」アクションの本文欄に設定。
  • 件名欄はメールテンプレート件名を直接コピペ。

メールテンプレートを使用せずにトライ
メールテンプレートを使用しない設定方法

上記でメールを送信してみると無事差し込みが反映されていました。

ケースの所有権が変更されました

メールアラートと「メールを送信」のできることできないことの比較

上記の結果から、もしフローで「メールアラート」と「メールを送信」のどちらを使用するのか迷った際は、送信先が「社内ユーザー」なのか、それとも「取引先責任者やリードなど、社外」なのかで判断が分かれそうですね。以下、簡単な比較表になります。

メールアラート 「メールを送信」アクション
社外ユーザーへの送付 ⚪︎ △(TRY1回目参照)
メールテンプレートの使用 ⚪︎ △(TRY2回目参照)
社内ユーザーへの送付 ⚪︎ △(TRY2回目参照)
本文へのレコード差し込み ⚪︎ △(TRY4回目参照)
署名 ⚪︎ △(テンプレに直入力)
任意の差出人設定 ⚪︎ ⚪︎

まとめ

フロー上でメールを送信する方法としてメールアラートと「メールを送信」アクションを検討してみましたが、現時点では使い勝手の良いメールアラートを使用するのが間違いなさそうです。

「メールを送信」アクションを使用する際は、送付先がリード、取引先責任者、または個人取引先に限定される場合にのみ使用した方が良いでしょう。

Contact

お問い合わせ
Salesforce、HubSpot、システム開発など
まずは何でもお気軽にご相談ください。