この文章は Salesforce 機械翻訳システムを使用して翻訳されました。詳細はこちらをご参照ください。
英語に切り替える

Id クラス

ID プリミティブデータ型のメソッドが含まれます。

名前空間

System

例: ID からの sObject トークンの取得

このサンプルでは、getSObjectType メソッドを使用して ID から sObject トークンを取得する方法を示します。このサンプルの updateOwner メソッドは、sObject の ID のリストを受け取って ownerId 項目を更新します。このリストには、同じデータ型の sObject の ID が含まれます。2 番目のパラメーターは、新しい所有者 ID です。これは future メソッドであるため、sObject のデータ型をパラメーターとして受け取れません。そのため sObject の ID を受け取ります。このメソッドは、リストの 1 番目の ID から sObject トークンを取得し、オブジェクト名を取得する describe を実行して動的にクエリを構築します。次に、すべての sObject を照会し、所有者 ID 項目を新しい所有者 ID に更新します。

1public class MyDynamicSolution {
2    @future
3    public static void updateOwner(List<ID> objIds, ID newOwnerId) {
4        // Validate input
5        System.assert(objIds != null);
6        System.assert(objIds.size() > 0);
7        System.assert(newOwnerId != null);
8        
9        // Get the sObject token from the first ID
10        // (the List contains IDs of sObjects of the same type).
11        Schema.SObjectType token = objIds[0].getSObjectType();
12        
13        // Using the token, do a describe 
14        // and construct a query dynamically. 
15        Schema.DescribeSObjectResult dr = token.getDescribe();
16        String queryString = 'SELECT ownerId FROM ' + dr.getName() + 
17            ' WHERE ';
18        for(ID objId : objIds) {
19            queryString += 'Id=\'' + objId + '\' OR ';
20        }    
21        // Remove the last ' OR'
22        queryString = queryString.subString(0, queryString.length() - 4);
23
24        sObject[] objDBList = Database.query(queryString);
25        System.assert(objDBList.size() > 0);
26        
27        // Update the owner ID on the sObjects
28        for(Integer i=0;i<objDBList.size();i++) {
29            objDBList[i].put('ownerId', newOwnerId);
30        }        
31        Database.SaveResult[] srList = Database.update(objDBList, false);
32        for(Database.SaveResult sr : srList) {
33            if (sr.isSuccess()) {
34                System.debug('Updated owner ID successfully for ' + 
35                    dr.getName() + ' ID ' + sr.getId());
36            }
37            else {
38                System.debug('Updating ' + dr.getName() + ' returned the following errors.');
39                for(Database.Error e : sr.getErrors()) {
40                    System.debug(e.getMessage());
41                }
42            }
43        }
44    }
45}

Id のメソッド

Id のメソッドは次のとおりです。

addError(errorMsg)

カスタムエラーメッセージでトリガーレコードをマークし、DML 操作が行われないようにします。

署名

public Void addError(String errorMsg)

パラメーター

errorMsg
型: String
レコードにマークを付けるエラーメッセージです。

戻り値

型: Void

使用方法

このメソッドは、addError(errorMsg) sObject メソッドと類似しています。

このメソッドは、指定されたエラーメッセージ内のすべての HTML マークアップをエスケープします。エスケープ文字は、\n<>&"\\u2028\u2029\u00a9 です。このため、HTML マークアップは表示されず、その代わりに、Salesforce ユーザーインターフェースにテキストとして表示されます。

メモ

1Trigger.new[0].Id.addError('bad');

addError(errorMsg, escape)

カスタムエラーメッセージを使用してトリガーレコードにマークを付け、エラーメッセージをエスケープする必要があるかどうかを指定して、DML 操作が行われないようにします。

署名

public Void addError(String errorMsg, Boolean escape)

パラメーター

errorMsg
型: String

レコードにマークを付けるエラーメッセージです。

escape
型: Boolean

カスタムエラーメッセージ内の HTML マークアップがエスケープされるか (true)、否か (false) を示します。このパラメーターは Lightning Experience と Salesforce モバイルアプリケーションの両方で無視され、HTML は常にエスケープされます。escape パラメーターは Salesforce Classic でのみ適用されます。

戻り値

型: Void

使用方法

エスケープ文字は、\n<>&"\\u2028\u2029\u00a9 です。このため、HTML マークアップは表示されず、その代わりに、Salesforce ユーザーインターフェースにテキストとして表示されます。

escape 引数に false を指定するときは、慎重に行ってください。Salesforce ユーザーインターフェースに表示されるエスケープ解除された文字列が、システムの脆弱性を示す場合があります。それらの文字列に有害なコードが含まれている可能性���あるためです。エラーメッセージに HTML マークアップを含める場合は、falseescape 引数を使用してこのメソッドをコールします。入力項目値などのすべての動的コンテンツをエスケープします。それ以外の場合は、escape 引数に true を指定するか、addError(String errorMsg) をコールします。

警告

1Trigger.new[0].Id.addError('Fix & resubmit', false);

addError(exceptionError)

カスタムエラーメッセージでトリガーレコードをマークし、DML 操作が行われないようにします。

署名

public Void addError(Exception exceptionError)

パラメーター

exceptionError
型: System.Exception
レコードにマークを付けるエラーメッセージを含む例外オブジェクトまたはカスタム例外オブジェクトです。

戻り値

型: Void

使用方法

このメソッドは、addError(exceptionError) sObject メソッドと類似しています。

このメソッドは、指定されたエラーメッセージ内のすべての HTML マークアップをエスケープします。エスケープ文字は、\n<>&"\\u2028\u2029\u00a9 です。このため、HTML マークアップは表示されず、その代わりに、Salesforce ユーザーインターフェースにテキストとして表示されます。

1public class MyException extends Exception{}
2
3Trigger.new[0].Id.addError(new myException('Invalid Id'));

addError(exceptionError, escape)

カスタムエラーメッセージでトリガーレコードをマークし、DML 操作が行われないようにします。

署名

public Void addError(Exception exceptionError, Boolean escape)

パラメーター

exceptionError
型: System.Exception

レコードにマークを付けるエラーメッセージを含む例外オブジェクトまたはカスタム例外オブジェクトです。

escape
型: Boolean

カスタムエラーメッセージ内の HTML マークアップがエスケープされるか (true)、否か (false) を示します。このパラメーターは Lightning Experience と Salesforce モバイルアプリケーションの両方で無視され、HTML は常にエスケープされます。escape パラメーターは Salesforce Classic でのみ適用されます。

戻り値

型: Void

使用方法

エスケープ文字は、\n<>&"\\u2028\u2029\u00a9 です。このため、HTML マークアップは表示されず、その代わりに、Salesforce ユーザーインターフェースにテキストとして表示されます。

escape 引数に false を指定するときは、慎重に行ってください。Salesforce ユーザーインターフェースに表示されるエスケープ解除された文字列が、システムの脆弱性を示す場合があります。それらの文字列に有害なコードが含まれている可能性があるためです。エラーメッセージに HTML マークアップを含める場合は、falseescape 引数を使用してこのメソッドをコールします。入力項目値などのすべての動的コンテンツをエスケープします。それ以外の場合は、escape 引数に true を指定するか、addError(Exception e) をコールします。

警告

1public class MyException extends Exception{}
2
3account a = new account();
4a.addError(new MyException('Invalid Id & other issues'), false);

getSObjectType()

この ID に対応する sObject のトークンを返します。このメソッドは Describe Information で使用されます。

署名

public Schema.SObjectType getSObjectType()

戻り値

型: Schema.SObjectType

使用方法

Describe についての詳細は、「Apex Describe Information について」を参照してください。

1account a = new account(name = 'account');
2insert a;
3Id myId = a.id;
4system.assertEquals(Schema.Account.SObjectType, myId.getSobjectType());

to15()

18 文字の ID 値を 15 文字の大文字と小文字を区別する文字列に変換します。

署名

public static string to15()

戻り値

型: String

1String Id_15_char = '0D5B000001DVM9t';
2String Id_18_char = '0D5B000001DVM9tkAh';
3ID testId = Id_18_char;
4System.assertEquals(testId.to15(),Id_15_char);

valueOf(toID)

指定した string を ID に変換してその ID を返します。

署名

public static ID valueOf(String toID)

パラメーター

toID
型: String

戻り値

型: ID

1Id myId = Id.valueOf('001xa000003DIlo');

バージョン管理動作の変更

API バージョン 54.0 以降、無効な 15 または 18 文字の ID を変数に割り当てると、System.StringException 例外が発生します。

valueOf(str, restoreCasing)

指定された文字列を ID に変換して返します。restoreCasingtrue で文字列が 18 文字の ID の場合、文字列の大文字/小文字が正しくないときは、エンコードされた大文字/小文字に正しく一致する 18 文字の ID が返されます。

署名

public static Id valueOf(String str, Boolean restoreCasing)

パラメーター

str
型: String
ID に変換される文字列。
restoreCasing
型: Boolean
true に設定した場合、str が 18 文字の ID のときは、その ID の大文字/小文字に正しく一致する 18 文字の ID が返されます。

戻り値

型: Id

戻り値は、strrestoreCasing の両方のパラメーター値に応じて変化します。

str が無効の場合は、System.StringException 例外が発生します。

メモ

パラメーター restoreCasing=true restoreCasing=false
有効な 15 文字の str 15 文字の入力値は大文字/小文字が合うようにエンコードできないため、System.StringException が発生します。 15 文字の ID が返されます。
有効な 18 文字の str そのエンコードされた大文字/小文字に正しく一致する 18 文字の ID が返されます。 18 文字の ID の大文字/小文字に正しく一致させることは試みられずに、18 文字の ID が返されます。