merge()
同じ種別の最大 3 つのレコードを 1 つのレコードに統合します。入力は MergeRequest 要素の配列で、各要素は統合するレコードを指定します。出力は、マージ結果に関する情報を含む MergeResult オブジェクトです。
構文
使用方法
merge() を使用して、同じオブジェクト種別のレコードを、主レコードと呼ばれる 1 つのレコードに統合します。merge() は、ビクティムレコードと呼ばれる他のレコードを削除します。ビクティムレコードに関連レコードがある場合、merge() は主レコードを関連レコードの新しい親にします。
ルールとガイドライン
- 非主レコードの値
- merge() をコールする前に、非主レコードの項目値を主レコード値よりも優先するかどうかを決定します。優先する場合は、MergeRequest の masterRecord によって識別されるレコードの項目名と値を設定します。
- 取引先責任者、リード、データプライバシーレコード
- 個人オブジェクトに基づいた対応するデータプライバシーレコードがある取引先責任者またはリードをマージする場合、merge() は主レコードに関連付ける適切なデータプライバシーレコードを決定します。
- リードと取引先責任者のマージに対して最後に更新されたデータプライバシーレコードを保持するオプションを選択した場合、merge() は最後に更新されたデータプライバシーレコードを選択します。
- それ以外の場合、merge() はすでに主レコードに関連付けられているデータプライバシーレコードを選択します。
- 連続するマージ
-
merge() は入力引数の各 MergeResult 要素を別個のトランザクションとして処理するため、複数のレコードを連続して同じ主レコードにマージできます。連続するマージを実行するには、MergeResult 要素の配列を指定して merge() をコールします。MergeResult 要素ごとに、以下を設定します。
- masterRecord を主レコード ID に設定します。
- recordToMergeIds 配列の各要素を、主レコードに統合するレコードの ID に設定します。
- 削除されたレコード
- queryAll() を使用して、マージ中に削除されたレコードを表示します。
- マージされたレコードの表示
- 指定の時間内にマージされたすべてのレコードを見つけるには、SELECT ステートメントと一緒に queryAll() をコールします。次に例を示します。
- サポートされているオブジェクト種別
-
サポートされているオブジェクト種別は、Lead、Contact、Account、Person Account、および Individual です。同じ種別のオブジェクトのみをマージできます。たとえば、リードはリードとのみマージできます。
- 関連取引先
- 関連取引先の一部である取引先をマージする場合、merge() はビクティムの子レコードを主レコードの子として設定しようとします。このアクションによって循環的なリレーションが生まれる場合、merge() はエラーを返します。
- 取引先責任者の上司リレーション
- ReportsToId 項目に値がある取引先責任者をマージする場合、merge() はビクティムの ReportsToId 値を主レコードに追加しようとします。このアクションによって循環的なリレーションが生まれる場合、merge() はエラーを報告します。
- 取引先責任者とポータルユーザ
- ポータルユーザが関連付けられている取引先責任者ビクティムレコードをマージする場合、ビクティムレコードの MergeRequest 要素の AdditionalInformationMap を設定します。1 つのビクティムとポータルユーザのみ主レコードにマージできます。Salesforce Classic では、カスタマーポータルの使用が有効になっている個人取引先をマージできません。
- 考慮事項
- 次の制限が、マージ要求に適用されます。
- 1 つの SOAP コール内に、最大 200 件のマージ要求を作成可能です。
- 主レコードを含めて、最大 3 つのレコードが 1 つの要求にマージ可能です。この制限は、Salesforce ユーザインターフェースによって適用される制限と同じです。3 件を超えるレコードをマージするには、連続するマージを実行します。
- 外部 ID 項目では、merge() を使用することはできません。
- リードと取引先責任者のマージに対して最後に更新されたデータプライバシーレコードを保持するオプションを選択し、選択されたデータプライバシーレコードの CRUD 権限がコール元にない場合、主レコードにすでに関連付けられているデータプライバシーレコードがマージプロセスにより選択されます。
- 重複するリレーション
- 同じ取引先責任者に関連付けられている取引先または個人取引先はマージできません。取引先をマージする前に、取引先と取引先責任者の重複リレーションを削除します。
サンプルコード — Java
このサンプルでは、1 つのビクティム取引先を主取引先とマージします。2 つの取引先が作成され、ビクティムにメモが添付されます。マージ後、コードはビクティム取引先の ID と更新された子レコード数を出力します。この例では、マージされた取引先のメモは主レコードに移動するため、更新されたレコード数は 1 です。
サンプルコード — C#
このサンプルでは、1 つのビクティム取引先を主取引先とマージします。2 つの取引先が作成され、ビクティムにメモが添付されます。マージ後、コードはビクティム取引先の ID と更新された子レコード数を出力します。この例では、マージされた取引先のメモは主レコードに移動するため、更新されたレコード数は 1 です。
引数
このコールは MergeRequest オブジェクトの配列を受け取ります。MergeRequest オブジェクトには、次のプロパティが含まれます。
| 名前 | 型 | 説明 |
|---|---|---|
| masterRecord | sObject | 必須。その他のレコードのマージ先であるオブジェクトの ID を提供する必要があります。状況に応じて、更新される項目とその値を提供してください。 |
| recordToMergeIds | ID[] | 必須。最小で 1 つ、最大で 2 つ。主レコードにマージされるその他のレコード。 |
| AdditionalInformationMap | map | 項目と値の対応付け。
|