Loading
Salesforce から送信されるメールは、承認済ドメインからのみとなります続きを読む

レコード ID プレフィックスからのオブジェクト種別の特定

公開日: Aug 5, 2025
説明
Salesforce の標準オブジェクトとカスタムオブジェクトでは、レコード ID の先頭に 3 文字のプレフィックスが付けられます。
たとえば、ユーザーレコード ID 00561000000Mjya のプレフィックスは 005 であり、ユーザーオブジェクトであることを表します。

標準項目のレコード ID プレフィックスの一覧は、「標準項目のレコード ID プレフィックスデコーダ一覧」を参照してください。

一部のシナリオでは、Apex コードを使用して、プレフィックスに関連付けられているオブジェクトの名前を検索することもあります。 
解決策
オブジェクト ID が「00561000000Mjya」であれば、[Execute Anonymous Apex (匿名 Apexの実行)] で次のコードを実行します。
Id sampleid = '00561000000Mjya'; System.debug('object is '+ sampleid.getsobjecttype());
別の方法もあります。SchemaGlobalDescribe というクラスを次のように作成します。
組織のオブジェクト数が多すぎると、Apex CPU 制限エラーが発生することがあります。その場合は、次のコードを調整して、管理パッケージを除外するか、または必要に応じてフィルタリングしてください。 
public class SchemaGlobalDescribe{
    public static String findObjectNameFromRecordIdPrefix(String recordIdOrPrefix){
        String objectName = '';
        try{
            //Get prefix from record ID
            //This assumes that you have passed at least 3 characters
            String myIdPrefix = String.valueOf(recordIdOrPrefix).substring(0,3);
             
            //Get schema information
            Map<String, Schema.SObjectType> gd =  Schema.getGlobalDescribe(); 
             
            //Loop through all the sObject types returned by Schema
            for(Schema.SObjectType stype : gd.values()){

                //if (!sObj.contains('__')) to exclude managed package objects

                Schema.DescribeSObjectResult r = stype.getDescribe();
                String prefix = r.getKeyPrefix();
                System.debug('Prefix is ' + prefix);
                 
                //Check if the prefix matches with requested prefix
                if(prefix!=null && prefix.equals(myIdPrefix)){
                    objectName = r.getName();
                    System.debug('Object Name! ' + objectName);
                    break;
                }
            }
        }catch(Exception e){
            System.debug(e);
        }
        return objectName;
    }
}
 開発者コンソールで次の Apex コードスニペットを実行して、レコード ID プレフィックスからオブジェクト名を特定します。
String objectName = SchemaGlobalDescribe.findObjectNameFromRecordIdPrefix('500'); 
System.debug(objectName);
このクラスや次のテストクラスを使用することで、カスタム Visualforce ページを作成したり、Lightning コンポーネントで使用したりできます。 
@isTest
private class SchemaGlobalDescribeTests{
    @istest
    private static void testMethodPositive(){
        String objectName = SchemaGlobalDescribe.findObjectNameFromRecordIdPrefix('500');
        System.assertEquals(objectName,'Case');
    }
    @isTest
    private static void testMethodNegative(){
        String objectName = SchemaGlobalDescribe.findObjectNameFromRecordIdPrefix('500');
        System.assertNotEquals(objectName,'Account');
    }
    @isTest
    private static void testMethodNull(){
        String objectName = SchemaGlobalDescribe.findObjectNameFromRecordIdPrefix('101');
        System.assertEquals(objectName,'');
    }
    @isTest
    private static void testMethodException(){
        String objectName = SchemaGlobalDescribe.findObjectNameFromRecordIdPrefix('10');
        System.assertEquals(objectName,'');
    }
}
ナレッジ記事番号

000388019

 
読み込み中
Salesforce Help | Article