TaskのWhatIdからRecordType情報を取得する方法と注意点


SalesforceでTaskのWhatId親レコードのRecordTypeを取得する方法

Salesforceでは、TaskオブジェクトのWhatIdフィールドを利用して、その親レコード(関連先)のRecordType情報を取得することができます。特に、以下のようなSOQLクエリを実行することで、親レコードのRecordTypeのNameやDeveloperNameを簡単に取得可能です。

基本的なSOQLクエリ例:

List<Task> tasks = [
    SELECT Id, What.RecordType.Name, What.RecordType.DeveloperName 
    FROM Task
    WHERE Id = 'YOUR_TASK_ID'
];

このクエリでは、

  • What.RecordType.Name および What.RecordType.DeveloperName を参照することで、Taskの関連先レコード(WhatIdが指すオブジェクト)のRecordType情報を取得します。
  • 関連先のオブジェクトにRecordTypeが存在しない場合は、これらのフィールドはNULLとなります。

注意点

  1. Person Accountの場合:
    Person Accountの場合は特有の動作があるため、RecordTypeの取得に関して追加の注意が必要です。具体的な実装やテスト環境で確認してください。

  2. Flowでの制限:
    APIバージョン63.0以降、Flowの「Get Records」要素では、What.RecordType.xxx のような式を使用して親レコードのRecordType情報を直接取得することはサポートされていません。

  3. Activityオブジェクトのカスタムフォーミュラ:
    Activity(TaskおよびEvent)のフォーミュラフィールドで What.RecordType.xxx を使用すると、構文エラーが発生します。これは、Activityオブジェクトに対する制約のためです。


まとめ

Apexコードを使用して、TaskオブジェクトのWhatIdフィールドを介して親レコードのRecordType情報を取得するのは非常に簡単です。上記のSOQLクエリを利用すれば、親レコードが持つRecordTypeのNameやDeveloperNameを効率的に取得でき、実際の運用に役立ちます。Flowなど他のツールでは制約があるため、複雑な権限やレコード関連情報を取得する場合は、Apexでの実装が推奨されます。

コメント