こんにちは!エンジニアの岩間です。
今回は、Salesforceで「取引先の所在地に最も近いサービステリトリー担当者へメール通知する」仕組みを、Apexを使って構築した話〜前編〜です!
突然ですが、Salesforceを使っていてこんな課題に直面したことはありませんか?
急ぎの現地対応が必要
顧客から新規商談リクエストや機器トラブルの連絡があり、最も近くにいる営業担当や技術者にすぐに対応してもらいたい。災害やトラブルでサポート依頼が殺到
特定地域で災害や障害が発生し、サポート要請が急増。最寄りの拠点や担当者にすぐ連絡して一次対応を依頼したい。設備点検や定期訪問の割り振りが面倒
住所を一つずつみながら誰を派遣するのか決めるのが面倒…
こんなとき、「誰が一番近いか」を自動で判定して、すぐに通知できたら便利ではないでしょうか?
この記事では、そんな仕組みをSalesforce×Apexで実現した方法について、解説していきます!
目次
Salesforceとは
Salesforceは、営業・サポート・マーケティングなど、顧客に関わる業務を一括で管理できるクラウド型の業務プラットフォームです。
ざっくり言うと、「見た目が使いやすい業務用のクラウドデータベース」と捉えると分かりやすいかもしれません。
Salesforceでは、
-
取引先(Account)
-
商談(Opportunity)
-
問い合わせ(Case)
-
取引先責任者(Contact)
など、さまざまな情報を管理するための「オブジェクト」と呼ばれるデータの箱が用意されています。
これは、RDBでいうところのテーブルのようなものと考えてください。
取引先とサービステリトリー
Salesforceには「商談」「問い合わせ」「ケース」「顧客」など、業務で使われる多くの標準オブジェクトが存在しますが、今回の仕組みで特に重要なのは「取引先(Account)」と「サービステリトリー」という2つのオブジェクトです。
というのも今回の目的は、
「取引先の住所に最も近い担当者(=サービステリトリーメンバー)を見つけて、すぐに通知すること」だからです。
つまり、「お客さま(取引先)がどこにいるのか」と「誰がどのエリアを担当しているのか(サービステリトリー)」という2つを組み合わせることで、自動的に担当者を割り出す仕組みが実現できます。
それぞれのオブジェクトの役割を下記に簡単にまとめてみました。
取引先(Account)とは
Salesforceにおける取引先は、顧客やパートナー、見込み顧客など企業や団体を表すオブジェクトです。
主な属性には、
-
会社名
-
住所
-
電話番号
-
業種
などがあります。ここで今回特に重要になるのが「住所」の情報です。
Salesforceのジオロケーション機能を使えば住所から緯度経度の情報の取得が可能となり、地理的な距離に基づくロジックを実装できるようになります。
サービステリトリーとは
サービステリトリーは特定の地理的エリアや業務範囲を担当するエリアです。
例として、
-
関東・関西・中部などの地域単位
-
市区町村ごとの担当グループ
-
サービステリトリーに所属する担当者(ユーザー)設定
があります。
それぞれのサービステリトリーには、対応する担当者(サービステリトリーメンバー) を紐づけておくことができるため、「この地域は誰が担当しているのか?」を確認することができます。
フィールドサービスの有効化
このサービステリトリー機能を利用するには、Salesforceの「フィールドサービス(Field Service)」を有効化しておく必要があります。
設定方法や有効化の手順については、こちらのSalesforce公式サイトをご確認ください。
緯度経度を活用して距離を測る
取引先の所在地とサービステリトリーを使って「どの担当者が最も近いか」を判断するためには、先述の通り、Salesforceのジオロケーション機能を使って実際の地理的な距離を計測していきます。
Salesforceでは住所情報をもとに「緯度・経度(ジオロケーション情報)」を扱う機能があります。
この機能を有効にすると、緯度・経度を使って距離の計算ができたり、地図との連携が可能になります。
一点注意が必要なのは、個人取引先(Person Account)においては、住所を入力しても緯度・経度が自動で設定されない点です。
そのため、個人取引先のジオロケーション情報を使いたい場合は、以下のような手動更新が必要です。
-
開発者コンソールの Anonymous Windowを使用して
Latitude
/Longitude
を更新 -
Apexコードで自動化スクリプトを組む
-
データローダー等で緯度・経度を一括インポートする
緯度経度の有効化
ここからは、Salesforceで緯度・経度情報を利用するための設定手順を説明します。
データインテグレーションルールの有効化
1. Salesforceにログイン後、右上の歯車アイコン→「設定」をクリックし、データインテグレーションルールを検索します。
2. 「Geocodes for Account Billing Address」(取引先請求先住所)と「Geocodes for Service Territory Address」(サービステリトリー住所)が有効になっているか確認します。無効の場合、対象の名前をクリック後、「有効化」ボタンをクリックし有効化します。
緯度・経度フィールドの反映確認
有効化からしばらくすると、対象オブジェクトに緯度・経度情報が自動的に追加されます。
以下の手順で、フィールドが反映されているか確認していきます。
1. Salesforceにログイン後、右上の歯車アイコン→「開発者コンソール」をクリックします。
2. 開発者コンソールが開くので、Query EditorよりSOQL(Salesforce Object Query Language)を実行し緯度経度が設定されているか確認します。
1 2 3 4 5 |
// 取引先の緯度・経度 SELECT Id, Name, BillingLatitude, BillingLongitude FROM Account // サービステリトリーの緯度・経度 SELECT Id, Name, Latitude, Longitude FROM ServiceTerritory |
Apexでのロジック実装
ここまでの設定により、取引先やサービステリトリーに緯度・経度情報が自動で付与されるようになりました。
次に行うのは、この情報を業務ロジックに組み込むことです。
ここで活躍するのが、Salesforce独自の開発言語であるApex です。
ApexはSalesforceに組み込まれている独自のプログラミング言語で、標準機能では難しいようなロジックや一連の処理を自由に記述できます。
Apexは、たとえば以下のようなタイミングで実行可能です。
-
CTI着信時のトリガーと連携し、リアルタイムに最適担当者へ通知
-
ケース作成直後にワークフローとして実行し、対応チームへ通知
要件や運用スタイルに応じて、Apexは高い柔軟性で対応可能です。
Apexクラス作成方法
ここからは、実際にApexを使ってロジックを実装していく準備として、Apexクラスの作成方法を紹介します。
1.Salesforceにログイン後、右上の歯車アイコン→「設定」をクリックし、Apexクラスを検索し、「新規」をクリックします。
2. 以下の画像のようにApexコードを直接入力する画面が表示されます。ここに、今回の処理ロジックを実装していきます。
まとめ 〜前編振り返り〜
お疲れさまでした!
以上、「取引先から最短距離にいる担当者へメール通知する仕組みをSalesforce Apexで実現してみた〜前編〜」でした。
前編では以下のような内容を扱いました。
-
Salesforce、取引先、サービステリトリーの基本概念
-
緯度・経度(ジオロケーション)機能の有効化方法
-
Apexの基本概念とクラス作成方法
後編では…
後編では、いよいよ実際のApexコード実装や、通知処理の流れ(フローとの連携)について具体的に解説していきます。
この記事が、少しでもみなさんのにお役に立てば幸いです。
ここまでお読みいただき、ありがとうございました!


- 取引先から最短距離にいる担当者へメール通知する仕組みをSalesforce Apexで実現してみた〜後編〜 - 2025-05-28
- 取引先から最短距離にいる担当者へメール通知する仕組みをSalesforce Apexで実現してみた〜前編〜 - 2025-05-23
- Amazon PollyのSSMLを使って日本語のイントネーションを自然にする - 2025-05-07
- [会話型AI活用]Amazon LexとConnectでシーン別にお花をレコメンドする仕組みを作ってみた - 2024-12-23
- FreePBXで留守電メッセージをメール通知するまでの設定手順 - 2024-12-16
【採用情報】一緒に働く仲間を募集しています
