取引先から最短距離にいる担当者へメール通知する仕組みをSalesforce Apexで実現してみた〜後編〜

こんにちは!エンジニアの岩間です。

今回は、Salesforceで「取引先の所在地に最も近いサービステリトリー担当者へメール通知する」仕組みを、Apexを使って構築した話〜後編〜をお届けします!

前編では、Salesforce のオブジェクトの概要や、緯度・経度(ジオロケーション)機能、Apex クラスについて紹介しました。
※まだ前編をご覧になっていない方はぜひ下記からどうぞ!

取引先から最短距離にいる担当者へメール通知する仕組みをSalesforce Apexで実現してみた〜前編〜

 

さて、後編ではいよいよ実際のApexコードの実装に入っていきます。
今回は Salesforce の「フロー」から呼び出せるように設計した Apex クラスを使って、緯度・経度をもとに最寄りの担当者を見つけて、自動でメール通知を送る処理を組み立てています。

後半ではフローへの組み込み方や設計時のちょっとした注意点についても紹介していくので、ぜひ最後までお読みいただけると嬉しいです!

Apex プログラム例

早速ここからは、実際のApexコード例をご紹介していきます

今回のクラス NearestServiceTerritoryFinder は、Salesforceのフローから呼び出し可能な形で作成しています。
主な処理の流れは以下の通りです。

  1. リクエストのバリデーション
     必要な情報(氏名・緯度・経度)が揃っているかをチェックします。

  2. 最寄りのサービステリトリーを検索
     ジオロケーション機能で距離を計算し、最短距離のサービステリトリーを1件取得します。

  3. 関連ユーザーのメールアドレス取得
     取得したサービステリトリーに紐づくユーザーのメールを取得します。

  4. 通知メール送信
     該当ユーザーに通知メールを送信します。

Apex からメール送信まで一通り自動化することで、担当者への素早い通知が可能になります。
距離ベースの自動通知を実現する一例として、ぜひ参考にしてみてください!

 

フローへの組み込み

ここからは、作成した Apex クラスを実際の業務フローにどう組み込むかを見ていきましょう。

Salesforce には「フロー(Flow)」という自動化ツールがあります。
レコードの作成や更新といったイベントをトリガーに、ノーコードでさまざまな処理を実行できるのが特徴です。

今回は、「ケース」レコードが作成されたタイミングで、先ほどの NearestServiceTerritoryFinder クラスを呼び出すフローを構成していきます。
これにより、例えばお問い合わせや通話を受け付けた瞬間に、所在地に最も近い担当者へ自動で通知を飛ばすことが可能になります。

フロー作成手順

ここからはフローの作成手順です。

1.  Salesforceにログイン後、右上の歯車アイコン→「設定」をクリックし、フローを検索します。

 

2. フローの画面に移動後、右上の「新規フロー」をクリックします。

 

3. Flow Builderのページが表示されるので、「最初から開始」を選択し、次へをクリックします。

 

4. 次に、「レコードトリガーフロー」を選択し、作成をクリックします。

 

5. レコードトリガーフローが作成されるので、オブジェクトに「ケース」を選択します。

 

6. 次に、開始と終了ブロックの間にある「+」アイコンをクリックし、アクションの要素を追加します。

7. アクションを検索のサイドバーが表示されるので、先ほど作成したApexを選択します。

 

 

8. 任意の表示ラベル、API参照名を入力したら、Apexに渡す値を下の画像のように設定します。

最後に画面右上の保存→有効化ボタンをクリックすればフロー作成完了です!

 

フローでは、必要なトリガー、変数のマッピング、Apex アクションの呼び出しなども直感的に設定できるため、非エンジニアでも運用に組み込みやすいと思います。

これで、「ケース作成 → 担当者特定 → メール通知」の一連の流れが完全に自動化されました!

テスト

それでは、実際に動作確認してみましょう。

Salesforceで取引先と取引先責任者を指定してケースを新規作成します。
保存後、最寄りのサービステリトリーメンバーにメールが届いていれば成功です!

もしメールが届かない場合は、こちらの設定などをチェックしてみてください。

 

Salesforce Code Analyzerを活用しよう

Apex コードを書く際は、セキュリティ、パフォーマンス、保守性にも注意が必要です。

Salesforce 公式の静的解析ツール「Salesforce Code Analyzer」を使えば、コードの問題点を自動で検出できます。

このようなコマンドで、SOQLインジェクションのリスクや無駄な DML 操作などを洗い出せます。
本番環境へデプロイする前に、ぜひ一度チェックしてみてください。

レート制限に注意

最後に、システム運用上の制限(レートリミット)についても触れておきます。

今回のように Apex クラスからメール通知を行う場合、Salesforce 側の1日あたりのメール送信数制限に引っかかる可能性があります。(自分も引っかかりました)

Developer Edition 組織とトライアル期間中に Salesforce を評価している組織では、各ユーザーは 1 日あたり最大 50 人の受信者にメールを送信でき、個々のメールには最大 15 人の受信者を含めることができます。

エディションによってもルールは異なるため、チェックしておきましょう。

また、今回は使用していませんが、APIコール数の上限も存在します。

API使用状況は「設定 → システムの概要」から確認できるため、定期的にチェックして、運用上のトラブルを未然に防ぐようにしましょう。

まとめ

お疲れ様でした!

以上、取引先から最短距離にいる担当者へメール通知する仕組みをSalesforce Apexで実現してみた〜後編〜でした。

後編では、このような内容を扱いました。

  • Salesforceのジオロケーション機能を活用し、最寄りのサービステリトリーを特定

  • ApexクラスをFlowから呼び出し、通知メールを自動送信

  • 運用時のメール送信制限など、注意すべきポイント

Salesforceのノーコード・ローコード機能とApexを上手に組み合わせることで、効率的かつ柔軟な業務自動化が可能になります。

この記事が、少しでもみなさんのにお役に立てば幸いです。

ここまでお読みいただき、ありがとうございました!

この記事が気に入ったら
いいね ! しよう

Twitter で

【採用情報】一緒に働く仲間を募集しています

採用情報
ページトップへ