SalesforceにおけるWebサービスコールアウトのテスト完全ガイド

Apexで「最近参照したデータ」を取得する方法


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);
}

注意事項

  1. データの制限

    • `RecentlyViewed`オブジェクトは、現在ログインしているユーザーのデータのみを返します。
    • 各オブジェクトごとに、Salesforceが内部的に定めた最近表示されたレコードの数(最大200件)が返されます。
  2. `LIMIT`の使用

    • クエリ結果が膨大になる可能性があるため、必ず`LIMIT`を設定して結果数を制御してください。
  3. ビューのパーミッション

    • ユーザーがアクセス権を持たないオブジェクトやレコードは結果に含まれません。

使用例: 最近表示されたレコードを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`オブジェクトを使用することで、ユーザーが最近アクセスしたレコードを簡単に取得できます。この情報は、カスタムダッシュボードやナビゲーション支援機能を構築する際に非常に便利です。

コメント