- リンクを取得
- ×
- メール
- 他のアプリ
Apexで「最近参照したデータ」オブジェクトIDを取得する方法
Salesforceの「最近参照したデータ」は、ユーザーが最近アクセスしたオブジェクトのリストを提供します。このデータはユーザーのナビゲーション履歴を追跡するのに便利ですが、Apexで取得するためには工夫が必要です。本記事では、「最近参照したデータ」をSOQLで取得する方法について解説します。
基本的なアプローチ
Salesforceでは「Recently Viewed」データを提供する標準オブジェクト`RecentlyViewed`を利用することで、現在ログインしているユーザーの最近表示したオブジェクトを取得できます。このオブジェクトはすべてのオブジェクトタイプに対して共通で、フィルタリングや条件指定も可能です。
SOQLを使用して「最近参照したデータ」を取得
以下の例では、`RecentlyViewed`オブジェクトをクエリし、ユーザーが最近アクセスした項目のIDとオブジェクト名を取得します。
// 最近表示されたオブジェクトを取得するサンプルコード List<RecentlyViewed> recentItems = [SELECT Id, Name, Type FROM RecentlyViewed LIMIT 10]; // デバッグログで取得結果を表示 for (RecentlyViewed item : recentItems) { System.debug('Object Type: ' + item.Type + ', Name: ' + item.Name + ', Record ID: ' + item.Id); }
クエリ結果のフィルタリング
特定のオブジェクトタイプのみを取得したい場合、`Type`フィールドを使用して条件を指定できます。
// Accountオブジェクトに限定して最近表示された項目を取得 List<RecentlyViewed> recentAccounts = [SELECT Id, Name FROM RecentlyViewed WHERE Type = 'Account' LIMIT 10]; // デバッグログで取得結果を表示 for (RecentlyViewed account : recentAccounts) { System.debug('Account Name: ' + account.Name + ', Record ID: ' + account.Id); }
注意事項
データの制限
- `RecentlyViewed`オブジェクトは、現在ログインしているユーザーのデータのみを返します。
- 各オブジェクトごとに、Salesforceが内部的に定めた最近表示されたレコードの数(最大200件)が返されます。
`LIMIT`の使用
- クエリ結果が膨大になる可能性があるため、必ず`LIMIT`を設定して結果数を制御してください。
ビューのパーミッション
- ユーザーがアクセス権を持たないオブジェクトやレコードは結果に含まれません。
使用例: 最近表示されたレコードをUIで活用
以下は、最近表示した項目をカスタムUIコンポーネントで表示する例です。
@AuraEnabled(cacheable=true) public static List<RecentlyViewed> getRecentRecords(String objectType) { return [SELECT Id, Name FROM RecentlyViewed WHERE Type = :objectType LIMIT 10]; }
この方法を使用することで、特定のオブジェクトに関連する最近表示項目をLightningコンポーネントやAuraで動的に表示できます。
まとめ
`RecentlyViewed`オブジェクトを使用することで、ユーザーが最近アクセスしたレコードを簡単に取得できます。この情報は、カスタムダッシュボードやナビゲーション支援機能を構築する際に非常に便利です。
コメント
コメントを投稿