ノーコードの Salesforce カレンダー: 36 の作業を 1 行のコードも書かずに
FullCalendar をカスタマイズできるのは、開発者がいる場合です。MultiDatePick なら、カレンダーを必要とする管理者自身がカスタマイズできます。日常的なカレンダーの 36 の作業を並べて比較したので、どちらが優れているかひと目でわかります。
「最もカスタマイズできるカレンダー LWC は?」「Salesforce のカレンダーはコードなしでカスタマイズできる?」「FullCalendar に代わるノーコードの選択肢は?」といった検索は、どれも同じことを尋ねています。答えを分けるのは、「誰が」カスタマイズするのかという一点です。
FullCalendar は JavaScript ライブラリです。すべてのオプションがコードの中にあるため、Salesforce では開発者が Lightning Web コンポーネント、レコードを読み込んで保存する Apex、テスト、デプロイを用意し、変更のたびにそれを繰り返します。MultiDatePick は完成済みの Salesforce カレンダーです。すべてのオプションは、管理者がセットアップウィザードか Lightning App Builder で選ぶ設定で、標準オブジェクトにもカスタムオブジェクトにも使えます。Apex も JavaScript もデプロイも不要です。
誰がカスタマイズするのか?
「カスタマイズできる」には 2 種類あります。ライブラリは、それを使ってコードを書く人がカスタマイズするものです。何でも実現できますが、何をするにも開発プロジェクトになります。設定型のコンポーネントは、それを使う人がカスタマイズするものです。選択肢はすべて構築、テスト、セキュリティ対策が済んでいて、必要なものを選ぶだけです。
Salesforce では、この違いがカレンダーの担い手を決めます。FullCalendar なら、開発者、コードカバー率 75% の Apex テスト、そして変更のたびのデプロイが必要です。MultiDatePick なら、会議室や担当者、日程を業務でどう予約しているかを知っている管理者が担い、変更は保存した時点で反映されます。
36 のカレンダー作業を並べて比較
各行は、管理者がよく頼まれる作業です。緑のセルが勝者で、コードなしの設定だけで完了します。「コード」は、開発者が FullCalendar の Lightning Web コンポーネントと Apex で実装する必要があることを意味します。
ユーザーが使う画面にカレンダーを配置
| 作業 | MultiDatePickノーコード | FullCalendar LWC |
|---|---|---|
| レコードページにカレンダーを追加 | Lightning App Builder でコンポーネントをページにドラッグし、Config Name (設定名) を入力 | コード: Lightning Web コンポーネント、静的リソースとしての FullCalendar、デプロイ |
| セットアップ | セットアップウィザード: ページとレコードについて質問し、該当しそうな項目を自動入力して、ライブプレビューを表示 | コード: すべてのオプションが JavaScript のプロパティ |
| ホームページやアプリケーションページに配置 | 同じコンポーネントで、Show All Records と OwnerId=ME のような Record Filter を設定 | コード: レコードのないページ用に別のデータ取得処理 |
| 画面フロー (Screen Flow) で使う | フロー画面にドラッグするだけ。選んだ日付と時刻が Flow 変数として出力される | コード: 独自の出力を持つフロー画面コンポーネント |
| Experience Cloud サイトで一般公開 | 同じコンポーネントを使い、ゲストユーザーに MultiDatePick - Guest 権限セットを割り当てる | コード: ログインしていないユーザー向けのゲストアクセス、共有設定、Apex |
| 設定を別の組織にコピー | 設定を JSON としてエクスポートし、別の組織でインポート。足りない項目はスマートな項目マッピングで対応付け | コード: デプロイと、それを通すための Apex テスト |
自社のレコードを表示
| 作業 | MultiDatePickノーコード | FullCalendar LWC |
|---|---|---|
| カスタムオブジェクトのレコードを表示 | オブジェクトとその日付項目を選ぶだけ | コード: 項目をイベントに対応付ける Apex クエリ |
| ToDo、行動、商談を表示 | 日付項目または日付/時間項目があれば、標準でもカスタムでもどのオブジェクトでも | コード: オブジェクトごとに Apex を追加 |
| 取引先の取引先責任者に登録された ToDo などの関連レコードを表示 | Rollup Field: 最大 5 階層先の参照関係まで | コード: リレーションをまたぐクエリ |
| 一部のレコードだけを表示 | Record Filter (例: OwnerId=ME; Status__c=Confirmed) | コード: Apex か JavaScript で絞り込みロジック |
| 状況ごとに色分け | Status Field と Status Colors。塗りつぶし、バー、またはその両方で表示し、フィルターピルも付属 | コード: 値ごとの色を JavaScript で対応付け |
| 会議の種類など、2 つ目の選択リストを追加 | Second Picklist Field で、選択できる値も指定 | コード: 選択 UI、保存処理、表示 |
| カーソルを合わせて詳細を表示 | Hover Popover Fields。参照項目も表示でき、ワンクリックでレコードへ | コード: イベント描画フックとツールチップ |
| 共有設定と項目レベルセキュリティを守る | すべてのクエリと保存を表示中のユーザーとして実行 | コード: 安全性は自分で書く Apex 次第 |
日付を選んでレコードを保存
| 作業 | MultiDatePickノーコード | FullCalendar LWC |
|---|---|---|
| 飛び飛びの日付を選べるようにする | 標準搭載: 好きな日をクリック、またはドラッグで期間を選択 | コード: FullCalendar で一度に選べるのは連続した 1 つの期間だけ |
| 期間を 1 件のレコードとして保存 | End Date Field: 連続した日が、開始日と終了日を持つ 1 件のレコードになる | コード: 日付をまとめる処理と保存処理 |
| 毎週月曜と水曜などの繰り返しパターンを追加 | Show Recurring Pattern Button: 平日、週末、カスタム日、第 2・第 4 金曜日など | コード: パターン入力フォームと日付計算 |
| 時間枠を選択 | Time Interval (Minutes)、Earliest Time、Latest Time | コード: 時間枠の選択 UI と保存処理 |
| 選択ごとに 1 件のレコードを保存 | 標準搭載。Default Record Name と Default Field Values も設定可能 | コード: Apex での挿入処理、エラー処理、テスト |
| 選べる日付の数に上限を設ける | Max Dates Allowed。上限に達したときのメッセージも Limit Reached Message で自由に設定 | コード: JavaScript で数を数えてブロック |
| 予約を Outlook や Google カレンダーに送る | 保存後に「カレンダーに追加」を表示(Show Add to Calendar After Saving) | コード: カレンダーファイルを自分で生成 |
予約ルール
| 作業 | MultiDatePickノーコード | FullCalendar LWC |
|---|---|---|
| 定員のある会議室、機器、人を予約 | Booking コンポーネント: Resource Object、Capacity Field、リアルタイムの空き数バッジ | コード: リソース表示には Premium ライセンスが必要で、定員の処理は自分で構築 |
| ダブルブッキングを防ぐ | Conflict Behavior: ブロック、スキップ、許可から選択 | コード: JavaScript での重複ルールと、サーバー側のチェック |
| 事前通知を必須にし、何日先まで予約できるかを制限 | Minimum Notice (Hours) と Book Up To (Days Ahead) | コード: 日付の制限を自分で計算して適用 |
| 予約と予約の間に空き時間を確保 | Buffer Between Bookings (Minutes) | コード: バッファーの計算 |
| リソースごとの営業時間を使う | リソースレコードの Business Hours Start Field と End Field | コード: リソースごとの時間を読み込んで適用 |
| 祝日、休業日、休暇をブロック | 任意のオブジェクトから Blocked Dates を読み込み。終日でも一部の時間でも指定でき、理由も表示 | コード: 背景イベントを自分でクエリして描画 |
表示と見た目
| 作業 | MultiDatePickノーコード | FullCalendar LWC |
|---|---|---|
| 月表示のグリッド以外の表示も提供 | Available Views: カレンダー、タイムライン、週、稼働率ヒートマップ、予定一覧をページごとに選択 | コード: タイムライン表示には Premium ライセンスが必要。稼働率ヒートマップはなし |
| チームや地域などの項目でタイムラインをグループ化 | タイムラインのグループ化項目(Timeline Group By Field) | コード: Premium のタイムラインに加えて自分で実装 |
| 複数のレコードをまとめて変更 | Enable Edit Mode: 複数のレコードをまとめて移動、状況を変更、削除 | コード: ドラッグ処理と Apex での更新 |
| ボタンとタイトルの名前を変更 | Button Label、Calendar Title、Save Button Label | コード: JavaScript でツールバーのオプションを設定 |
| ページに合わせる | Calendar Size (最小から全幅まで)、Two-Month View、Week Starts on Monday | コード: オプションと CSS |
ユーザー、言語、保守
| 作業 | MultiDatePickノーコード | FullCalendar LWC |
|---|---|---|
| 各ユーザーの言語で表示 | 9 言語を標準搭載: 英語、ドイツ語、スペイン語、フランス語、イタリア語、ポルトガル語、日本語、中国語、ヒンディー語 | コード: FullCalendar が翻訳するのは自身のボタンだけ。独自のラベルやメッセージは自分で翻訳 |
| 各ユーザーのタイムゾーンで時刻を表示 | 各ユーザーの Salesforce の設定から自動で反映 | コード: タイムゾーンのオプションと変換 |
| アクセシビリティ基準を満たす | キーボードとスクリーンリーダーに対応。WCAG 2.1 AA の VPAT を公開済み | コード: テストもドキュメントも自前で用意 |
| Salesforce のリリースに追従 | 更新はパッケージで提供 | コード: リリースのたびに自分で保守 |
ノーコードのカスタマイズはどこで行うのか
36 の作業はどれも、管理者が次のいずれかの場所で選ぶ設定です。
セットアップウィザード
ページとレコードについて質問し、該当しそうな項目を自動入力して、保存前に実際のカレンダーを表示する Lightning タブです。
Lightning App Builder
すべての設定はコンポーネントのプロパティでもあるので、ほかのページに影響を与えずに 1 つのページだけを調整できます。
Config Library
会議室から休暇まで、インポートして調整するだけの既製のセットアップが 41 種類。
エクスポートとインポート
設定は JSON なので、Sandbox や別の組織に移せます。足りない項目は自動で対応付けられます。
Flow Builder
カレンダーをフロー画面に置き、選んだ日付を次のステップで使えます。
Experience Builder
同じカレンダーを公開サイトに置き、ゲストにも同じルールを適用できます。
よくある質問
Salesforce 向けのノーコードのカレンダー LWC はありますか?
はい。MultiDatePick は、クリック操作だけで設定できる Lightning Web コンポーネントのカレンダーです。セットアップウィザードか Lightning App Builder で、標準オブジェクトにもカスタムオブジェクトにも設定できます。レコードの読み込みと保存はコンポーネント自身が行うので、Apex や JavaScript を書く必要はありません。
FullCalendar は MultiDatePick よりカスタマイズ性が高いのですか?
それは開発者にとっての話です。FullCalendar はライブラリなので、誰かがコードを書いて保守すれば何でも実現できます。管理者にとっては MultiDatePick のほうがカスタマイズしやすいカレンダーです。予約ルールから 9 言語対応まで、よくある 36 の作業がどれも 1 つの設定で済みます。
Salesforce 管理者は開発者なしで MultiDatePick を設定できますか?
はい。セットアップウィザードがページとレコードについて質問し、該当しそうな項目を自動で入力して、実際のカレンダーをライブプレビューで表示します。あとはコンポーネントをページにドラッグし、Config Name を入力するだけです。
カレンダーからレコードを保存するのに Apex は必要ですか?
MultiDatePick なら不要です。保存時に、日付ごと、期間ごと、時間ブロックごと、またはリソースごとに 1 件のレコードを作成するか、日付を画面フローに渡します。保存はすべて表示中のユーザーとして実行され、共有設定と項目レベルセキュリティが適用されます。
あとからデプロイなしでカレンダーを変更できますか?
はい。セットアップウィザードで設定を開き、オプションを変更して保存するだけで、カレンダーは次回の読み込み時に変更を反映します。設定はカスタムメタデータなので、必要なら変更セットや Salesforce CLI で移行することもできます。
ノーコードのカレンダーは画面フローや Experience Cloud サイトでも使えますか?
はい。同じコンポーネントをフロー画面に置けば、選んだ日付が Flow 変数になります。公開 Experience Cloud サイトに置けば、ゲストも同じルールで予約できます。
コードなしで、自由にカスタマイズできるカレンダーを。
ライブデモを操作してみるか、Config Library のすぐに使える設定から始めましょう。
- $20/ユーザー/月ですべての機能
- 30 日間無料、カード不要
- 100% Salesforce ネイティブ
- Apex 不要
- Salesforce AppExchange で近日公開