アプリケーションページ、ホームページ、Experience サイト
MultiDatePick はレコードページだけでなく、あらゆる Lightning の画面で動作します。ポイントは Static Parent Record Id という 1 つのプロパティです。
これらの画面が違う理由
MultiDatePick は、選択した日付を関連オブジェクトのレコードとして保存し、それぞれを親レコードに紐付けます。コンポーネントが知る必要があるのは、どの親かということだけです。
- レコードページ (例: 行事のレコード) では、Salesforce が現在のレコードの Id (
recordId) を自動的にコンポーネントに渡します。追加の設定は不要です。 - アプリケーションページ、ホームページ、Experience サイトには「現在のレコード」がありません。Salesforce は何も渡しません。親がなければ保存先がないため、コンポーネントはクリックしても失敗するボタンを表示する代わりに、意図的に保存ボタンを非表示にします。
Lightning App Builder でアプリケーションページやホームページに、または Experience Builder でページに MultiDatePick をドラッグすると、プロパティパネルに Static Parent Record Id が表示されます。
Static Parent Record Id とフローの使い分け
Static Parent Record Id はコンポーネントを固定の 1 つの親に向けるため、すべての訪問者が同じレコードを見ます。これが最適な場合もあれば、そうでない場合もあります。ユーザーや訪問ごとにレコードを変える必要があるなら、代わりに画面フローで制御します。コンポーネントをフロー画面に配置し、その Parent Record Id を、フローが実行時に決める変数に関連付けます。
全員に同じレコードなら Static Parent Record Id
- 公開の予約ページ: ゲスト向けの「予約を申し込む」ページで、すべての予約が同じ親レコード (1 つの事業所、拠点、リソース) に紐付く場合。固定の Id がまさに最適です。
- 組織全体で 1 つのカレンダー: 「会社の休業日」レコード 1 件や、全員が予約する共有リソース 1 つなど、ユーザーによって変わらないもの。
- 固定のダッシュボードの起点: アプリケーションページやホームページで、常に同じマスターレコードを指すもの。
目安: 「これは誰のレコード?」という問いの答えが「全員同じもの」なら、Static Parent Record Id を使います。
実行時にレコードを決めるならフロー
- ユーザーごとのレコード: 各自が自分のレコードだけを見る場合 (例: 各契約者が自分の休暇カレンダーを開く)。フローで所有者または紐付いた取引先責任者が
{!$User.Id}と一致する レコードを取得 を行い、Id を保存してコンポーネントに渡します。 - URL で指定: フローの入力変数がリンクの
?id=…を読み取るので、1 つのページで多くのレコードに対応できます。ゲストでもログインなしで使えます。 - 先に選択: 1 つ目の画面でユーザーが対象 (従業員、会議室、顧客) を検索・選択し、2 つ目の画面でそのレコードのカレンダーを表示します。
$User) の判定は使えません。Static Parent Record Id で 1 つのレコードを共有するか、フローで URL パラメーターから決めてください。本当にユーザーごとのカレンダーにするには、ログインユーザーが必要です。1 分で設定
保存ボタンが表示される条件
4 つすべてが揃わないと、保存ボタンは表示されません。
| # | プロパティ (ビルダーでの表示ラベル) | レコードページ | アプリケーション / ホーム / Experience |
|---|---|---|---|
| 1 | 親レコード | 自動 (recordId) | Static Parent Record Id |
| 2 | 子オブジェクトの API 参照名(Child Object API Name) | 必須 | 必須 |
| 3 | 日付項目の API 参照名(Date Field API Name) | 必須 | 必須 |
| 4 | 関連項目の API 参照名(Relationship Field API Name) | 必須 | 必須 |
Config Name にセットアップウィザードの設定を指定すれば、2〜4 は自動で入力されます。
配置場所
| 画面 | 作成する場所 | 公開方法 | 必要なアクセス権 |
|---|---|---|---|
| アプリケーションページ | Lightning App Builder で [新規]、[アプリケーションページ] | 有効化して 1 つ以上のアプリケーションに追加 (タブになります) | MultiDatePick - User 権限セット |
| ホームページ | Lightning App Builder で [新規]、[ホームページ] | 組織のデフォルトとして有効化するか、アプリケーションマネージャーの [ページ] でアプリケーションごとに有効化 | MultiDatePick - User 権限セット |
| Experience サイト | Experience Builder の [カスタムコンポーネント] | サイトを公開 | メンバーのプロファイル (またはゲストユーザー): オブジェクトと項目への参照・作成権限と共有ルール。公開サイトの場合: ゲスト用チェックリスト |
ホームページのヒント: Existing Dates Mode を readonly にすると、参照専用の「予定一覧」として使えます。
公開ゲストサイト: 5 つのチェックリスト
公開の Experience Cloud ページなら、誰でもログインせずに予約できます。ゲストとしてテストする前に、5 つすべてを済ませてください。最も見落とされやすいのは手順 4 と 5 です。公開ゲストサイトであるライブデモで、実際の動作を確認できます。
| # | ステップ | 設定内容 |
|---|---|---|
| 1 | オブジェクト権限 | コンポーネントが使う各オブジェクトについて、サイトのゲストユーザーに参照権限を、ゲストが送信する場合は作成権限も付与します。ゲストは編集も削除もできません。これはすべてのアプリケーションに適用される Salesforce のゲストライセンスのルールなので、編集やキャンセルはログインが必要なページで行うようにしてください。 |
| 2 | 項目レベルセキュリティ | カレンダーが表示するすべての項目に参照権限を、書き込むすべての項目 (状況、時刻、リレーション項目を含む) に編集権限を付与します。リソースの営業時間と休業日の項目も忘れずに含めてください。 |
| 3 | ゲスト用の共有ルール | ゲストがレコードを参照できるよう、ゲストユーザー向けの参照の共有ルールを作成します。ルールを適用するには、オブジェクトのデフォルトの外部アクセス権が非公開である必要があります。メタデータとしてデプロイしたルールは、共有設定で [再計算] を 1 回クリックする必要があります。 |
| 4 | ゲスト用の権限セット | サイトのゲストユーザーに MultiDatePick - Guest を割り当てます。カレンダーがデータを読み込むための Apex クラスへのアクセス権と、MultiDatePick のオブジェクトに対してゲストに許可される参照・作成の権限が含まれています。 |
| 5 | 公開と有効化 | 公開と有効化は別々の手順です。ゲストに表示されるのは有効化されたサイトだけです。 |
ゲストに必要な組織の設定がさらに 2 つ
| 設定 | 理由 |
|---|---|
| デフォルトのレコード所有者 | ゲストはレコードを所有できないため、Salesforce はゲストの予約をすべてデフォルトの所有者に割り当てます。Experience Workspaces の [管理]、[設定] で指定します。 |
| 参照先レコードへの参照権限 | リソースや親を参照する予約では、そのレコードに対するゲストの参照権限が必要です。ないと相互参照エラーで保存に失敗します。ゲストが予約する対象にはカスタムオブジェクトを使ってください。取引先責任者や取引先へのゲストアクセスは厳しく制限されています。 |
公開の予約ページを計画中ですか? Salesforce Experience Cloud サイトでのセルフサービス予約で、ゲストにできることと、見せるべき表示を解説しています。
レコードページ以外で使う 6 つのパターン
| パターン | 画面 | コンポーネント | 追加するもの |
|---|---|---|---|
| 社内の予約ハブ (「会議室を予約」) | アプリケーションページ | Booking | 定員項目で「3/10」の空き状況をリアルタイム表示 |
| 顧客のセルフサービス予約 | Experience サイト | Booking または Date Time | 顧客ごとのケースや注文を親にする場合はフロー |
| 個人の空き状況 / 休暇 | ホームページ | Dates | 状況の色で Pending と Approved をひと目で区別 |
| イベントや研修コースの申し込み | Experience サイトまたはアプリケーションページ | Date Time | Max Dates Allowed で 1 人あたりの回数を制限 |
| ボランティアやシフトの申し込み | Experience サイト | Booking | 定員項目で「残り枠」を、状況の色で Open と Full を表示 |
| プロジェクトのマイルストーン | アプリケーションページ | Dates または Date Time | 状況の色 (Planned、In Progress、Done) と 2 か月表示 |
トラブルシューティング
| 症状 | 解決策 |
|---|---|
| 保存ボタンが表示されない | 4 つのうちどれかが空欄です。レコードページ以外では、たいてい Static Parent Record Id です。 |
| カレンダーは表示されるが保存に失敗する | オブジェクトへのアクセス権がありません。MultiDatePick - User 権限セットを割り当て、サイトではメンバーまたはゲストのプロファイルに参照・作成権限を付与します。 |
| 保存時に「項目『…』はオブジェクト『…』に存在しません」 | API 参照名の入力ミスです。[設定] のオブジェクトマネージャーからコピーしてください。名前空間プレフィックスが必要なのは、他のパッケージのオブジェクトだけです (例: acme__Visit_Date__c)。 |
| サイトのメンバーが自分のレコードを見られない | 子オブジェクトに共有ルールを追加します (または組織の共有設定を緩めます)。 |
| 保存した日付が更新すると消える | Load Existing Dates をオンのままにします (デフォルトでオンです)。 |
| Static Parent Record Id が「有効ではありません」 | Relationship Field が参照する親オブジェクトの、実在する 15 文字または 18 文字の Id を使ってください。 |
ほかの問題ですか? トラブルシューティングに、設定時のすべてのメッセージをスクリーンショットと解決方法付きで掲載しています。