Salesforce の取引先カレンダー: 関連レコードをすべて 1 つの画面に
取引先責任者の ToDo。商談のマイルストーン。プロジェクトの訪問予定。そのすべてを、設定 1 つで取引先のカレンダーに。階層の深さを問わず、Apex は書きません。
「取引先責任者に登録したものも含めて、この取引先の ToDo をすべて見るには?」「商談のマイルストーンも取引先ページに表示できる?」「レコードページに孫レコードを表示するには?」1 社の顧客に関する業務は、たくさんのレコードに分散しています。取引先ページには、そのすべてを 1 か所に表示するべきです。
MultiDatePick は、それを積み上げ項目で実現します。取引先ページのカレンダーは、取引先に直接紐づくレコードに加えて、取引先責任者、商談、プロジェクト、または最大 5 階層の参照関係を通じて離れた場所から取引先を指すすべてのレコードを読み込みます。セットアップウィザードの項目 1 つだけ。Apex は不要です。
取引先ページでできること
取引関係の全体像
取引先、その取引先責任者、商談の ToDo とレコードが、ページを開くと 1 つのカレンダーに表示されます。
どのオブジェクトも、どの階層も
標準オブジェクトもカスタムオブジェクトも、直接の紐付けでも最大 5 階層の参照関係のパスでも表示できます。
保存はシンプルなまま
新しい日は、いつものリレーション項目でページのレコードに保存されます。関連レコードはそれぞれの親のままです。
状況の色分け
直接のレコードも積み上げたレコードも、すべて状況の色で表示され、カレンダー上部のボタンで状況ごとに絞り込めます。
ホバーで詳細を表示
日にカーソルを合わせると、どの電話、マイルストーン、訪問なのかが表示され、そのレコードを開けます。
ユーザーごとのアクセス権
レコードはページを表示しているユーザーとして読み込まれるため、共有設定と項目レベルセキュリティがいつもどおり適用されます。
取引先ページに予定の一部しか表示されない理由
レコードページのカレンダーは通常、そのレコードを参照するレコードを読み込みます。取引先ページの ToDo カレンダーなら、関連先が取引先になっている ToDo です。しかし、業務の大半は別の場所に登録されています。取引先責任者への定期連絡の電話、商談のパイロット開始、プロジェクトの現地訪問。どれも 1 階層以上離れた場所で取引先に属するレコードですが、1 階層だけのカレンダーでは表示されません。
積み上げ項目が、その抜けを埋めます。ページのレコードにつながる 2 つ目の項目、または参照関係のパスを指定すると、カレンダーにはどちらかに一致するすべてのレコードが表示されます。上の Northwind Logistics の例では、取引先自身の訪問予定は 11 月の 4 日分ですが、積み上げ項目に AccountId を設定すると、取引先責任者への電話や商談のマイルストーンが加わり、月全体で 11 日になります。
積み上げ項目のしくみ
2 つの項目が、それぞれ別の役割を担います。リレーション項目は新しいレコードの保存先です。取引先ページで日を選べば、そのレコードは取引先に紐づきます。積み上げ項目は 2 つ目の一致条件です。積み上げ項目の値がページのレコードと一致するレコードも、カレンダーに表示されます。この方法で動く設定例をいくつか紹介します。
| ページ | カレンダーのレコード | リレーション項目 | 積み上げ項目と追加されるもの |
|---|---|---|---|
| 取引先 | ToDo | WhatId | AccountId: 取引先の取引先責任者と商談の ToDo |
| 取引先 | 行動 | WhatId | AccountId: 取引先の取引先責任者との打ち合わせや商談の打ち合わせ |
| 取引先 | プロジェクトタスク (カスタム) | Account__c | Project__r.Account__c: 取引先が持つすべてのプロジェクトのタスク |
| 取引先 | 現地訪問 (カスタム) | Account__c | Location__r.Region__r.Account__c: 取引先のすべての地域にある、すべての拠点への訪問 |
| 商談 | マイルストーン (カスタム) | Opportunity__c | Quote__r.OpportunityId: 商談の見積に登録されたマイルストーン |
パスは Salesforce がリレーションを書くのと同じ形で書きます。各参照関係のリレーション名、ドット、そして最後に項目名です。カスタムの参照関係は途中で __r で終わり (Project__r)、標準の参照関係は Id を取ります (Contact.AccountId)。最大 5 階層で、Salesforce のクエリで使える深さと同じです。
セットアップウィザードで設定する
積み上げ項目は、ウィザードの「項目」画面で、すでに選んでいる項目の隣のその他ボックスにあります。
- カレンダーの配置場所を選びます。 MultiDatePick セットアップウィザードのタブを開き、取引先のレコードページと、カレンダーの保存方法 (Dates カレンダーなら日付ごとに 1 件のレコード) を選びます。
- 各日の保存先を選びます。 「項目」画面で ToDo を選び、リレーション項目に関連先 ID (WhatId)、日付項目に期日 (ActivityDate)を指定します。
- 積み上げ項目を入力します。
AccountIdと入力するか、カスタムオブジェクトならProject__r.Account__cのような参照関係のパスを入力します。Account_Visitsのような名前で設定を保存します。 - 取引先ページにコンポーネントを配置します。 Lightning App Builder で MultiDatePick の Dates コンポーネントを追加し、Config Name に設定名を入力します。これで、すべての取引先にその取引先の予定全体が表示されます。
すでにページにカレンダーがある場合は、ウィザードでその設定を開き、積み上げ項目を追加して保存するだけです。その設定を使うすべてのページに、次回の読み込みから反映されます。同じ積み上げ項目のプロパティは、Lightning App Builder のコンポーネントにもあります。
親レコードへの積み上げを活用しているチーム
1 件のレコードに関する業務が、周囲のレコードに登録されている場面なら、どこでも使えます。
動作を決める設定
いずれもセットアップウィザードの項目とコンポーネントのプロパティなので、コードは一切不要です。
| 設定 | 機能 | API 参照名 |
|---|---|---|
| 関連オブジェクト | カレンダーで表示・保存するオブジェクト (ToDo や、カスタムの現地訪問オブジェクトなど)。 | relatedObjectApiName |
| リレーション項目 | ページのレコードへの参照関係。新しいレコードはこの項目で保存されます。 | relationshipFieldApiName |
| 積み上げ項目(Rollup Field) | ページのレコードにつながる 2 つ目の項目または参照関係のパス。一致するレコードもカレンダーに表示されます。 | rollupField |
| 日付項目 | 各レコードをカレンダーに配置する日付項目 (ActivityDate など)。 | dateFieldApiName |
| 状況項目と状況の色(Status Field and Status Colors) | 状況の選択リストと値ごとの色 (例: Completed:#22C55E)。 | statusField、statusColors |
| ホバー項目(Hover Popover Fields) | 日にカーソルを合わせたときに表示する項目 (件名、状況など)。 | hoverFields |
| 設定名(Config Name) | セットアップウィザードで保存した設定。これを設定すれば、ほかは空欄のままで構いません。 | configName |
よくある質問
Salesforce の取引先カレンダーに、取引先責任者や商談の ToDo を表示するには?
取引先のレコードページに MultiDatePick の Dates コンポーネントを配置し、関連オブジェクトに ToDo、リレーション項目に WhatId を指定して、積み上げ項目 (Rollup Field) に AccountId と入力します。取引先の取引先責任者や商談に登録された ToDo にも Salesforce が取引先を保存しているため、それらの ToDo が取引先自身の ToDo と並んで取引先カレンダーに表示されます。
Salesforce のカレンダーに孫レコードを表示できますか?
はい。積み上げ項目には Project__r.Account__c のような参照関係をたどるパスを指定できるため、取引先ページのカレンダーに、その取引先に属するすべてのプロジェクトのレコードを表示できます。パスは 5 階層まで指定でき、これは Salesforce のクエリが参照関係をたどれる上限と同じです。
積み上げ項目を設定すると、新しいレコードはどこに保存されますか?
これまでどおりリレーション項目を通じて保存されます。積み上げ項目は、カレンダーに表示するレコードを増やすだけです。取引先ページで選んだ日はその取引先に紐づくレコードとして保存され、関連レコードはそれぞれの親のままです。
積み上げ表示は共有設定と項目レベルセキュリティに従いますか?
はい。カレンダーはページを表示しているユーザーとしてレコードを読み込むため、レコードの共有設定と項目レベルセキュリティが適用されます。ユーザーに表示されるのは、Salesforce ですでにアクセス権を持つ関連レコードだけです。
積み上げ項目に対応している MultiDatePick のコンポーネントは?
Dates と Date Time の各コンポーネントで、保存先が標準オブジェクトでもカスタムオブジェクトでも使えます。Booking コンポーネントも This Record Only と組み合わせて同じ積み上げ項目を使えるため、タイムライン、週、稼働率、予定一覧の各表示に、参照関係のパスを通じてページのレコードに紐づく予約を表示できます。
取引先のすべてを、取引先ページに。
ライブデモを操作してみるか、Config Library の既製の設定から始めましょう。
- $20/ユーザー/月ですべての機能
- 30 日間無料、カード不要
- 100% Salesforce ネイティブ
- Apex 不要
- Salesforce AppExchange で近日公開