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

データローダで外部 ID を使用して関連レコードをインポートする

公開日: Dec 21, 2020
説明
データローダで Upsert 操作を処理する際に、関連レコードの Salesforce レコード ID の代わりに外部 ID を使用して、レコードを相互に関連付けることができます。

例えば、あるオブジェクト (B) に別のオブジェクト (A) への参照項目がある場合、オブジェクト A の外部 ID としてマークされた項目に含まれる値を使用して、2 つのレコード (オブジェクト B とオブジェクト A のレコード) を関連付けることができます。外部 ID 項目とは何か、およびその使用目的についての詳細は、「外部 ID を使用してインポートできますか?」を参照してください。
解決策
考慮事項:
  • データローダで操作を実施する前に、必ずデータのバックアップを取るようにしてください。エクスポートサービスでバックアップデータをエクスポートするか、データローダで適当なオブジェクトのデータをエクスポートしてください。単一もしくは、一部のレコードでテストを実施し、対応する Salesforce のレコードが正しいことを確認して、操作が成功することを確かめてください。結果を確認した後に、すべてのレコードを Insert、 Update、または Upsert します。詳細については「Salesforce からバックアップデータをエクスポートする」を参照してください。
 
  • すべての参照項目を外部 ID に対応付けることは不可能かもしれません。たとえば、標準の活動オブジェクトの関連先  (WhatId) 項目や名前 (WhoId) 項目、カスタムオブジェクトの所有者項目などの多態的な項目では、外部 ID への対応付けはできません。次のアイデアがご要望の機能である場合は、投票 (Upvote) を検討してください: 「Enable External Keys on Polymorphic Fields」。アイデアは、将来のリリースで Salesforce に追加される可能性があります。詳細については、「リレーション項目および多態的な項目について」を参照してください。


外部 ID を使用した関連レコードのインポートについてのビデオ (英語)
How to Update Records Using the External ID Using Data Loader


外部 ID を使用して関連レコードをインポートする

Salesforce レコード ID と同様に、項目が外部 ID としてマークされている場合、その値を使用して関連レコードを対応付けたり、関連付けることができます。外部 ID は、通常外部システムから一意のレコード識別子を保存するときに使用され、既存の、または関連する Salesforce のレコード ID を含むインポートファイルを用意することなく、常にデータを Salesforce にロードすることができます。
 
1. オブジェクト A で一致させたい既存の外部 ID 項目を特定し (またはオブジェクト A でデータ型が「テキスト」の新規カスタム項目から外部 ID を作成し)、外部 ID とユニークの項目属性を選択します。
 
注: 外部 ID の作成の詳細については、関連するヘルプ記事を参照してください:「カスタム項目の作成」および「カスタム項目の属性」
 


2. Salesforce の関連レコード (この例ではオブジェクトA) に外部 ID 項目を入力します。
関連オブジェクト (A) のレコードがすでに Salesforce に存在する場合:
 
- 外部 ID 項目に一意の値が入力されていることを確認して、後でレコードを関連付けるための一致条件として簡単に使用できるようにします。

A) レポートを作成してレポートをエクスポートするか、データローダを使用してデータをエクスポートすることによって、すべてのオブジェクト A のレコードを含む .CSV ファイルを作成します。

注: オブジェクト A のレコードの Salesforce ID を必ずレポートまたはエクスポートファイルに含めてください。

B) エクスポート結果に外部 ID 項目に必要な一意の値を入力し、Salesforce ID と外部 ID項目を対応付けて既存のレコードを更新します。
 
関連オブジェクト (A) のレコードが Salesforce に存在しない場合:
 
- オブジェクト A のレコードの一意の識別子として機能するデータを含む列を識別し、それをレコードの挿入時に手順 1 で識別または作成した外部 ID 項目に対応付けます。オブジェクト A のインポートファイルから対応付けるために選択した一意の値は、オブジェクト B のインポートファイルにすでに含まれているか、外部システムのファイルに含まれているのが理想的です。
 
3. オブジェクト A に新規レコードを Insert するか、既存のレコードを Update します。必要な項目と外部 ID の列を、手順 1 で確認したオブジェクト A のレコードの外部 ID 項目に対応付け、Salesforce のオブジェクト A のすべてのレコードに、一意の外部 ID の値を入力します (Update、Upsert を実施するときに Salesforce ID を含み、対応付けるようにしてください)。
 
詳細は、データローダを使用したデータの挿入、更新、または削除の関連記事を参照してください。
 
4. 関連オブジェクト A のレコードと一致し、対応付けに使用したい外部 ID を含むオブジェクト B のファイルを準備し、次の手順でオブジェクト B からオブジェクト A へ参照項目を入力します。
  • オブジェクト B の CSV ファイルで、手順の 1~3 でオブジェクト A のレコードに設定した 外部 ID に一致する一意のデータを含む列を選択します。もしくは「外部 ID」という新規の列を作成し、それに手動で (または Excel の VLOOKUP 関数を使用して) オブジェクト A のレコードに設定した外部 ID の値を入れます。
 
5.  データローダで次の操作を実施します。
 
1. [Upsert] をクリックします。
2. 対象のオブジェクトを選択します (この記事の例ではオブジェクト B です)。
3. [Browse] をクリックします。
4. オブジェクト B のインポートファイルを選択します。
5. [Next] をクリックします。
 
6. オブジェクト B レコードのインポート時に外部 ID 項目をオブジェクト A レコードに対応付けるために、Step 2 の画面の [choose your related objects] で、オブジェクト A の外部 ID 項目をドロップダウンから選択します。
 
7. Step 3 の [mapping]で、Salesforce 項目を名前構文 [ObjectName]:[ExternalIDField__c] でドラッグアンドドロップし、オブジェクト A のレコードの外部 ID 値を含むオブジェクト B ファイルの列に対応付けます (この例では、 命名構文 [ObjectName] は「Object A」で、[ExternalIDField__c] は Step 1 のオブジェクト A の外部 ID 項目の API 名です。
  • これを実施すると、作成した外部 ID を使用してオブジェクト B のレコードをオブジェクト A のレコードに簡単に関連付けることが可能です。オブジェクト A のレコードをインポートし、新規 ID をエクスポートし、エクセルファイルでそれらを対応付け、子レコードをインポートするという手順を踏む必要はありません。

参考情報:
データローダで外部 ID として自動採番が利用できません
[外部 ID] 項目と [一意の ID] 項目の設定の違い
ナレッジ記事番号

000383207

 
読み込み中
Salesforce Help | Article