フローの進化が著しい昨今、ワークフローの出番は少なくなっていく一方かと思うと寂しい気もします。バリバリ文系の自分が、自動化の構造を学んだのはワークフローだったので、未経験者が最初に知る自動化機能としていつまでもいてほしいものです。
今日は、ベストプラクティスや Tipsの話ではなく、仕様の話になります。「どのような情報でも何がヒントになるかはわからないからすぐに取り出せるように整理しておく」というモットーがありますのでこちらで共有いたします。
このような設定については、通常は条件で処理してしまうことが多いので
私自身あまり気にしたことはなかったのですが、質問を受けて「そういえばどうなんだろう?」と思って確認した次第です。
メールの受信者がすべて空欄の場合、プロセスビルダーではエラーが返ってきますが、ワークフローではエラーが返ってきません。
例
・商談のレコードに日付項目「請求締日」とメール項目「担当部署メール通知」があります。
・「請求締日」の5日前になったら、「担当部署メール通知」に登録されているメールアドレス宛にメールを送信します。このときの条件として、「請求締日」に値が入っているときに自動化が動くように設定します。

ここで賢い皆さまなら、「条件で「担当部署メール通知」に値が入っているとき」に設定したらいいのでは?」と思いますよね。そのとおりです。入力規則で必ず入力させるようにしてもいいですね。ただ、
どちらも設定していなかった場合で、
メールアラートの受信者として指定されているメール項目が空欄のときには、ワークフローとプロセスビルダーでの挙動は、次のようになります。
ワークフロー
タイムトリガで設定した時刻まで「時間ベースのワークフロー」のキューには入りますが、メールは送信されません。また、特にエラーメッセージなどが管理者に送信されることもなく、エラーにはならないようです。

プロセスビルダー
「一時停止中のフローインタビュー」でキューに入ったことが確認できますが、スケジュールした時刻になると管理者にエラーメッセージが送信されます。
アクションのキューには入りますが……

エラーが返ってきました。

プロセスビルダーの仕様については、こちらのナレッジページに説明がありました。
◇ SALESFORCE >ヘルプ >プロセスビルダーの「Probably Limit Exceeded or 0 recipients」エラーエラーメッセージは、受信者リストに空白のメール項目が指定されていることから発生します。
まとめ
プロセスビルダーでメールアラートを設定するときは、メールに値が入っていないとエラーを返してくれますが、ワークフローでは返してくれません。どのような運用かにもよりますが、レコード上のメール項目をメールアラートの受信者とする場合は、入力規則や自動化の条件で、値の入力を必須とするようにしましょう(きちんとテストをしていれば漏れることもないと思いますが……)。
ワークフロー、プロセスビルダー、フロー、(ときどき承認プロセスも)それぞれに違いがあって、「あ、こっちはダメなのか」「こっちはいけるのか」という発見が未だにあります。プロセスビルダーとフローは、あらゆるパターンを想定して条件の定義をしっかりしないと、思うように動きません。自由度が高い分、細部まで設定する必要があります。
切羽詰まっているときは困ったりもしますが、それぞれの違いが、機能の進化を見ているようで面白いなぁとおも思います。
皆さまも、使い分けや意外な仕様について発見がありましたら、是非教えてください。
関連記事
親子関係:片方の情報をもう片方へも表示する際の機能の使いわけ時間ベースのワークフローを使用して、ある日付項目を過ぎた子レコードの数を親レコードに表示する承認プロセスの項目自動更新をトリガにプロセスを起動するマルチ通貨:プロセスビルダーでレコードタイプごとに通貨を設定し、入力時の動作をも変えるワークフロー ①ワークフロールールとは(プレミアムコンテンツ)ワークフロー ②評価/ルール条件ワークフロー ⑤アクション:メールアラートワークフロー ⑧時間ベースのワークフローワークフロー ⑨ワークフロールールを作成する