Salesforceにデータを登録する際に同じ宛先に複数のメールを順番に送信する方法についてです。あまり無いケースだと思いますが、必ずメールAが受取人に届いたあとにメールBを送りたいといった要件が発生したときの対応方法です。複数送信ということでパッと思いつくのが下記の設定方法です。
ですがワークフロールールのアクションの実行順序は保証されていないので必ずしも同じ順番で送信されるわけではありません。
実行順序を担保したい場合は、プロセスビルダーで設定するのが良いと思います。
これで要件を満たす形で設定完了...と思ったのですが、思わぬ挙動がありました。メールクライアントによって表示順が異なる場合があります。下記のようにGmailではメールAが届いたあとにメールBが届いたのですが、Appleのメールクライアントでは稀に順番が逆転しました。
Gmail
Apple
下記の形でメールアラート処理の間に項目自動更新を挟む形でも解決できませんでした。
- メールA送信
- メールB送信フラグを更新
- メールB送信
順番を担保したい場合はメールB送信処理を遅らせる必要があるみたいです。
この問題を解決する方法ですが、プロセスビルダーのスケジュール済みアクションを使用することで解決できます。スケジュールの間隔は「日」または「時」のみ指定可能で「分」はありませんでした。ですが、「0時間前」という形で指定することで1時間以内に送信することができます。
2つ目のだいたい1分〜3分遅れで送信されると思います。(状況によってはもっと時間がかかるかもしれません)
この手順でメールAのあとにメールBが送信されるという要件を確実に満たせると思います。
プロセスビルダーのスケジュール済アクションのメリット
プロセスビルダーのスケジュール済アクションで、レコードの更新を行う場合は実行条件を指定できます。
ワークフロールールの時間ベースのアクションの場合は、項目自動更新アクションをそのまま呼び出すので細かい設定ができないようです。
こうしたスケジュール済み処理で判定処理を組み込む必要がある場合はプロセスビルダーの方がやりやすいと思います。