
レコード作成時に上位ロールのユーザーへ通知を送信する方法
はじめに
こんにちは。
今回は、レコード作成時に上位ロールのユーザーへ通知を送信する方法についてご紹介します。
具体的には、カスタム通知を作成し、それを使用して対象のユーザーに通知を送るフローを作成することで設定が可能です。
では設定方法をご紹介していきます。
レコード作成時に上位ロールのユーザーへ通知を送信する
設定方法をご紹介していくにあたって、「商談」に関連する「ToDo」が作成された時に、割り当て先ユーザーの上位ロールのユーザーへ通知を送信するフローを作成していきます。
1. カスタム通知を作成する
フローで通知を送信するために「カスタム通知」を作成していきます。
[設定]で「カスタム通知」を検索し、 [通知ビルダー] > [カスタム通知] をクリックします。画像①の画面が表示されるので、赤枠内にある[新規]ボタンをクリックします。

画像②の画面が表示されるので、任意の「カスタム通知名」「API参照名」を入力します。「サポートされるチャネル」では通知チャネルを選択することができ、今回は「デスクトップ」のみを選択しました。

各項目の入力が完了したら[保存]をクリックし、「カスタム通知」の作成は完了です。なお、フローで「API参照名」を使用するので忘れずにメモしておきます。
2. フローを作成する
① レコードトリガーフローの作成を開始する
レコードトリガーフローでフローを作成していきます。[設定] > [フロー] > [新規フロー] を選択し、画像①の画面で[レコードトリガーフロー]を選択し[作成]をクリックします。

② フローの開始要素を設定する
[作成]をクリックすると、フローの開始要素の設定画面が画像②のように画面右側に表示されます。ここでは「商談」に関連する「ToDo」が作成された時に、フローが起動されるよう以下の設定を行います。
オブジェクト: ToDo
フローをトリガーする条件: レコードが作成された
条件の要件: すべての条件に一致(AND)
[項目] WhatId * [演算子] 次の文字列で始まる [値] 006 **
フローを最適化: アクションと関連レコード
* "WhatId" について
"WhatId" は「ToDo」の「関連先」項目のAPI参照名であり、「ToDo」に関連付けられている「商談」や「取引先」などのIDが含まれます。
** "006" について
Salesforceでは各オブジェクトのレコードIDの最初の3文字は固定されており(「商談」の場合は"006")、その事を利用して条件を作成しています。 なお、各オブジェクトのレコードIDの最初の3文字の一覧は、Salesforceによって推奨されているこちらのサイトから確認する事が可能です。

③ カスタム通知種別レコードを取得する
1.で作成したカスタム通知をフローで使用するために、「カスタム通知種別」というオブジェクトから、作成したカスタム通知が保存されているレコードの取得を行います。
②で設定した開始要素の下にある[ + ]をクリックし、画像③のように[レコードの取得]を選択します。

その後表示される画像④の設定画面では以下の設定を行います。
オブジェクト: カスタム通知種別
表示ラベル: カスタム通知種別レコード取得
API参照名: Get_CustomNotificationTypeRecord
カスタム通知種別レコードを絞り込み: すべての条件に一致(AND)
[項目] DeveloperName * [演算子] 次の文字列と一致する [値] Notification_HighRoleUser **
カスタム通知種別レコードを並び替え: 並び替えなし
保存するレコード数: 最初のレコードのみ
レコードデータの保存方法:すべての項目を自動的に保存
* "DeveloperName" について
"DeveloperName" には作成したカスタム通知のAPI参照名が保存されています。
** "Notification_HighRoleUser" について
"Notification_HighRoleUser" は1.で作成したカスタム通知のAPI参照名です。

④ ToDoの割り当て先ユーザーのレコードを取得する
ここからは通知を送る対象のユーザー情報を取得するための処理を行なっていきます。対象である「ToDo」の割り当て先ユーザーの上位ロールのユーザー情報を取得するために、ここでは「ToDo」割り当て先の「ユーザー」レコードの取得を行います。
③で設定した[レコードの取得]の下にある[ + ]をクリックし、同様に[レコードの取得]を選択します。
その後表示される画像⑤の設定画面では以下の設定を行います。
オブジェクト: ユーザー
表示ラベル: ToDoの割り当て先ユーザーレコード取得
API参照名: Get_UserRecord_ToDoOwner
ユーザーレコードを絞り込み: すべての条件に一致(AND)
[項目] Id [演算子] 次の文字列と一致する [値] {!$Record.OwnerId} *
ユーザーレコードを並び替え: 並び替えなし
保存するレコード数: 最初のレコードのみ
レコードデータの保存方法:すべての項目を自動的に保存
* {!$Record.OwnerId} について
{!$Record.OwnerId} はトリガーレコード(ToDo)の「割り当て先」項目です。

⑤ ToDoの割り当て先ユーザーのロールレコードを取得する
次に④で取得した「ユーザー」レコードの情報をもとに、ToDoの割り当て先ユーザーの「ロール」レコードを取得します。
④で設定した[レコードの取得]の下にある[ + ]をクリックし、同様に[レコードの取得]を選択します。
その後表示される画像⑥の設定画面では以下の設定を行います。
オブジェクト: ロール
表示ラベル: ToDoの割り当て先ユーザーレコード取得
API参照名: Get_UserRoleRecord_ToDoOwner
ロールレコードを絞り込み: すべての条件に一致(AND)
[項目] Id [演算子] 次の文字列と一致する [値] {!Get_UserRecord_ToDoOwner.UserRoleId} *
ロールレコードを並び替え: 並び替えなし
保存するレコード数: 最初のレコードのみ
レコードデータの保存方法:すべての項目を自動的に保存
* {!Get_UserRecord_ToDoOwner.UserRoleId} について
{!Get_UserRecord_ToDoOwner.UserRoleId} は④で取得した「ユーザー」レコードの「ロールID」項目です。

⑥ ToDoの割り当て先ユーザーの上位ロールのユーザーレコードを取得する
次に⑤で取得した「ロール」レコードの情報をもとに、ToDoの割り当て先ユーザーの上位ロールの「ユーザー」レコードを取得します。
⑤で設定した[レコードの取得]の下にある[ + ]をクリックし、同様に[レコードの取得]を選択します。
その後表示される画像⑦の設定画面では以下の設定を行います。
オブジェクト: ロール
表示ラベル: 上位ロールのユーザーレコード取得
API参照名: Get_UserRecord_HighRole
ユーザーレコードを絞り込み: すべての条件に一致(AND)
[項目] UserRoleId [演算子] 次の文字列と一致する [値] {!Get_UserRoleRecord_ToDoOwner.ParentRoleId} *
ユーザーレコードを並び替え: 並び替えなし
保存するレコード数: 最初のレコードのみ
レコードデータの保存方法:すべての項目を自動的に保存
* {!Get_UserRoleRecord_ToDoOwner.ParentRoleId} について
{!Get_UserRoleRecord_ToDoOwner.ParentRoleId} は⑤で取得した「ロール」レコードの「上司のロールID」項目です。

⑦ 取得した上位ロールのユーザーIDを変数に割り当てる
⑥で取得したユーザーIDを対象に通知を行う設定をこの後行なっていきますが、ユーザーIDは設定上テキスト型のコレクション変数に保存されている必要があります。ですので、ここではコレクション変数を作成し、その変数に⑥で取得したユーザーIDを割り当てる処理を行なっていきます。
⑥で設定した[レコードを取得]要素の下にある[ + ]をクリックし、画像⑧のように[割り当て]を選択します。

設定画面が表示されたら[変数値を設定]の[変数を検索...]ボックスをクリックし、表示される[ + 新規リソース]をクリックし変数を作成します。画像⑨の画面が表示されるので、以下のように入力を行い[完了]をクリックします。
リソース種別:変数
API参照名:CollectionVar_HighRoleUser
データ型:テキスト
複数の値を許可(コレクション):チェックをつける

変数を作成したら、[割り当て]の設定画面では画像⑩のように以下の設定を行います。
表示ラベル: 取得した上位ロールのユーザーIDをコレクション変数に割り当て
API参照名: Set_HighRoleUserId_CollectionVar
変数値を設定:
[変数] {!CollectionVar_HighRoleUser} [演算子] 追加 [値] {!Get_UserRecord_HighRole.Id}
* {!Get_UserRecord_HighRole.Id} について
{!Get_UserRecord_HighRole.Id} は⑥で取得した「ユーザー」レコードの「ユーザーID」項目です。

⑧ カスタム通知アクションを作成する
最後に、フローで取得した情報をもとに通知の対象や通知内容を設定する「アクション」の設定を行なっていきます。
「アクション」では通知の「タイトル」と「本文」を設定できるので、フロー要素を設定する前に「テキストテンプレート」の作成を前もって行います。画像⑪の赤枠内にあるアイコンをクリックし、[ツールボックス]タブを開きます。

[ツールボックス]タブ内の[新規リソース]をクリックし、「テキストテンプレート」を「タイトル」と「本文」用に2つ作成していきます。今回は以下のように作成しました。
「タイトル」のテキストテンプレート(画像⑫)
リソース種別: テキストテンプレート
API参照名: Title
本文: 新規ToDo
「本文」のテキストテンプレート(画像⑬)
リソース種別: テキストテンプレート
API参照名: Body
本文:新規ToDo「{!$Record.Subject}」が作成されました。


「テキストテンプレート」の作成後、⑦で設定した[割り当て]の下にある[ + ]をクリックし、画像⑭のように[アクション]を選択します。

選択するとアクションの選択画面が表示されます。そこで画面上部の[アクション]の検索欄に「カスタム通知を送信」と入力すると、画像⑮の画面が表示されます。

画像⑮の画面では以下の設定を行います。
表示ラベル: 上位ロールのユーザーへ通知
API参照名: Action_Notification_HighRoleUser
カスタム通知種別 ID: {!Get_CustomNotificationTypeRecord.Id}
⇨ ③で取得した「カスタム通知種別」レコードのID
受信者 ID: {!CollectionVar_HighRoleUser}
⇨ ⑦で作成したコレクション変数
通知タイトル: {!Title}
⇨ 作成したテキストテンプレート
通知本文: {!Body}
⇨ 作成したテキストテンプレート
送信者 ID: {!$Record.OwnerId}
⇨ 今回はレコードの割り当て先IDを設定
対象 ID: {!$Record.Id}
⇨ トリガーレコードを設定
以上で「商談」に関連する「ToDo」が作成された時に、割り当て先ユーザーの上位ロールのユーザーへ通知を送信するフローの作成は完了です。[保存] をクリックして、[有効化] をクリックします。
3. 作成したフローを確認する
作成したフローによって、「商談」に関連する「ToDo」が作成された時に、割り当て先ユーザーの上位ロールのユーザーへ通知が送信されるかを確認していきます。今回は「商談」に関連する「ToDo」を「メンバー」というロールのユーザーを割り当て先として作成し、上位ロールである「マネージャー」のユーザーに通知が届くことを確認します。
画像①のように「商談」に関連する「ToDo」を「メンバー」ロールのユーザー「田中 一郎」を割り当て先として作成します。

作成後、「マネージャー」ロールのユーザーでログインすると、画像②のように画面右上の通知アイコンに1件通知が届いていることが確認できました。

クリックすると画像③のように表示され、⑧で作成した「タイトル」と「本文」が通知内容として表示されていることも確認できました。

まとめ
今回は、カスタム通知とフローの作成によって、レコード作成時に上位ロールのユーザーへ通知を送信する方法を紹介しました。
設定する項目は多く複雑ですが、カスタム通知と「カスタム通知を送信」アクションを活用することで様々な条件での通知を設定することが可能となります。
Salesforceに関するお悩みはありませんか?
今回ご紹介したフローをはじめとするSalesforceの機能活用について、
「調べるのに時間がかかる...」
「作ったはいいがバグが起こらないか心配...」
「Salesforceを活用したいけどそこまで手が回らない...」
などお悩み事はありませんか?
Air合同会社ではSalesforceエンジニアを一人雇うほどの業務は無いが、業務を任せたいというお客様へ月 数時間~40時間で柔軟にご利用頂けるSalesforce活用支援サービスを提供しています。
機能の実装や改善のご提案、社内での内製化支援まで、貴社のSalesforceのお悩みを解決いたします。Salesforceをより活用し課題解決を行なっていくための手段としてぜひご検討ください。
Salesforce業務を他社に外注するイメージがわかない…という方に向け、外注する際のメリット・デメリットやSalesforce開発の流れを以下の記事で解説しています。ぜひご覧ください。(自社サイトへ移動します。)
Salesforce運用保守を外注するメリット・デメリットとは?
Salesforceのノーコード・ローコード開発の流れを解説!
また、弊社では「サービスについて簡単に知りたい」「Salesforceの使い方について相談したい」などSalesforceに関する無料相談会も随時実施しています。まずはお気軽にお問い合わせください。
↓関連記事
↓サービスの資料請求はこちらからお申し込みいただけます。
↓無料相談はこちらからお申し込みいただけます。
この記事を書いた人
Suzuki
Salesforceの認定資格「Salesforce認定アドミニストレーター」を保有しています。 IT業務経験ゼロからSalesforceに関する実務に携わってきた経験をもとに、初心者の目線に立って各種機能の活用方法や設定手順をステップバイステップでわかりやすくご紹介します。