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

ステップ 5: 一括更新/挿入

この Bulk API 2.0 の例では、レコードを更新/挿入するジョブの作成、ジョブデータのアップロード、状況の確認、および結果の取得の手順について説明します。
  1. オブジェクトが外部 ID 項目を使用していることを確認します。

    レコードを更新/挿入するには、ジョブに含まれるオブジェクトに外部 ID 項目が必要です。Bulk API 2.0 は、レコードが既存レコードの更新とレコードの作成のどちらに使用されるかを外部 ID 項目を使用して判断します。

    この例では、外部 ID 項目 customExtIdField__cAccount オブジェクトに追加されているものと想定します。
    オブジェクトマネージャでこのカスタム項目を組織に追加するには、次のプロパティを使用します。
    • データ型 — text
    • 項目表示ラベル — customExtIdField
    • [外部 ID] を選択します。
    詳細は、Salesforce ヘルプ「カスタム項目の作成」を参照してください。
  2. 更新/挿入するレコードを含む CSV ファイルを作成します。

    この例のすべてのファイルをターミナルの現行の作業ディレクトリに保存します。

    メモ

    CSV ファイルの最初の���には、処理するオブジェクトの項目名をリストします。それ以降の行は、挿入するレコードに対応します。

    CSV ファイル内の 1 列は、外部 ID 項目 customExtIdField__c に対応している必要があります。

    使用可能な区切り文字や有効な日時形式など、CSV ファイルの準備については、「Bulk API 2.0 取得」を参照してください。

    この例では、次の情報を accountupsert.csv という名前のファイルにコピーします。

    1customExtIdField__c,name,NumberOfEmployees
    2123,GenePoint,800
    3234,"United Oil & Gas, UK",1467
    4345,"United Oil & Gas, Singapore",348
    5456,Edge Communications,10045
    6567,Burlington Textiles Corp of America,5876
    7678,Dickenson plc,67
    8789,Grand Hotels & Resorts Ltd,409
    9890,Express Logistics and Transport,243
    10901,University of Arizona,9506
    111350,United Oil & Gas Corp.,5467
    121579,sForce,40000
    132690,University of The Terrific,1257
  3. 外部 ID 項目を含むジョブを作成します。

    次の情報を newupsertjob.json という名前のファイルにコピーします。

    1{
    2    "object" : "Account",
    3    "externalIdFieldName" : "customExtIdField__c",
    4    "contentType" : "CSV",
    5    "operation" : "upsert",
    6    "lineEnding" : "LF"
    7}

    URI

    1/services/data/v55.0/jobs/ingest/

    一括更新/挿入ジョブの作成例

    1curl https://MyDomainName.my.salesforce.com/services/data/v55.0/jobs/ingest/ -H 'Authorization: Bearer 00DE0X0A0M0PeLE!AQcAQH0dMHEXAMPLEzmpkb58urFRkgeBGsxL_QJWwYMfAbUeeG7c1EXAMPLEDUkWe6H34r1AAwOR8B8fLEz6nEXAMPLE' -H "Content-Type: application/json" -H "X-PrettyPrint:1" -d @newupsertjob.json -X POST

    レスポンスボディの例

    応答にはジョブ ID が含まれており、ジョブの状態として Open が示されています。ジョブ ID と contentUrl 項目の URL は、次のステップでデータをアップロードするときに使用します。

    1{
    2  "id" : "7476gEXAMPLE4X2ZWO",
    3  "operation" : "upsert",
    4  "object" : "Account",
    5  "createdById" : "0055fEXAMPLEtG4AAM",
    6  "createdDate" : "2022-01-02T21:57:03.000+0000",
    7  "systemModstamp" : "2022-01-02T21:57:03.000+0000",
    8  "state" : "Open",
    9  "externalIdFieldName" : "customExtIdField__c",
    10  "concurrencyMode" : "Parallel",
    11  "contentType" : "CSV",
    12  "apiVersion" : 55.0,
    13  "contentUrl" : "services/data/55.0/jobs/ingest/7476gEXAMPLE4X2ZWO/batches",
    14  "lineEnding" : "LF",
    15  "columnDelimiter" : "COMMA"
    16}
  4. 作成した CSV データファイルをアップロードします。

    URI

    便宜上、ステップ 1 での応答の contentUrl 項目の URI を使用します。URI は次のようになります。

    1/services/data/v55.0/jobs/ingest/jobId/batches/

    データのアップロード例

    1curl https://MyDomainName.my.salesforce.com/services/data/v55.0/jobs/ingest/7476gEXAMPLE4X2ZWO/batches/ -H 'Authorization: Bearer 00DE0X0A0M0PeLE!AQcAQH0dMHEXAMPLEzmpkb58urFRkgeBGsxL_QJWwYMfAbUeeG7c1EXAMPLEDUkWe6H34r1AAwOR8B8fLEz6nEXAMPLE' -H "Content-Type: text/csv" --data-binary @accountupsert.csv -X PUT

    レスポンスボディの例

    レスポンスボディは返されません。

  5. ジョブを終了します。

    データの送信が完了したら、ジョブを終了して Salesforce にジョブの処理準備ができたことを伝達します。

    upload_complete.json という名前の JSON ファイルを作成し、次の内容を含めます。

    1{"state":"UploadComplete"}

    URI

    /services/data/v55.0/jobs/ingest/jobId/

    ジョブの終了例

    1curl https://MyDomainName.my.salesforce.com/services/data/v55.0/jobs/ingest/7476gEXAMPLE4X2ZWO/ -H 'Authorization: Bearer 00DE0X0A0M0PeLE!AQcAQH0dMHEXAMPLEzmpkb58urFRkgeBGsxL_QJWwYMfAbUeeG7c1EXAMPLEDUkWe6H34r1AAwOR8B8fLEz6nEXAMPLE' -H "Content-Type: application/json" -H "X-PrettyPrint:1" -d @upload_complete.json -X PATCH

    レスポンスボディの例

    1{
    2  "id" : "7476gEXAMPLE4X2ZWO",
    3  "operation" : "upsert",
    4  "object" : "Account",
    5  "createdById" : "0055fEXAMPLEtG4AAM",
    6  "createdDate" : "2022-01-02T21:28:22.000+0000",
    7  "systemModstamp" : "2022-01-02T21:28:22.000+0000",
    8  "state" : "UploadComplete",
    9  "externalIdFieldName" : "customExtIdField__c",
    10  "concurrencyMode" : "Parallel",
    11  "contentType" : "CSV",
    12  "apiVersion" : 55.0
    13}
  6. 成功の結果を取得します。

    ジョブの状態が JobComplete または Failed になったら、どのジョブデータレコードが正常に処理されたかについての詳細を取得できます。

    URI

    1/services/data/v55.0/jobs/ingest/jobId/successfulResults/

    成功の結果の取得例

    1curl https://MyDomainName.my.salesforce.com/services/data/v55.0/jobs/ingest/7476gEXAMPLE4X2ZWO/successfulResults/ -H 'Authorization: Bearer 00DE0X0A0M0PeLE!AQcAQH0dMHEXAMPLEzmpkb58urFRkgeBGsxL_QJWwYMfAbUeeG7c1EXAMPLEDUkWe6H34r1AAwOR8B8fLEz6nEXAMPLE' -H "Content-Type: application/json" -H "Accept: text/csv" -H "X-PrettyPrint:1" -X GET

    応答には CSV 形式のデータが含まれており、各行には正常に処理されたレコードのレコード ID が入っています。

    レスポンスボディの例

    1"sf__Id","sf__Created",customExtIdField__c,name,NumberOfEmployees
    2"0018c00002DJIpJAAX","true","123","GenePoint","800"
    3"0018c00002DJIpKAAX","true","234","United Oil & Gas, UK","1467"
    4"0018c00002DJIpLAAX","true","345","United Oil & Gas, Singapore","348"
    5"0018c00002DJIpMAAX","true","456","Edge Communications","10045"
    6"0018c00002DJIpNAAX","true","567","Burlington Textiles Corp of America","5876"
    7"0018c00002DJIpOAAX","true","678","Dickenson plc","67"
    8"0018c00002DJIpPAAX","true","789","Grand Hotels & Resorts Ltd","409"
    9"0018c00002DJIpQAAX","true","890","Express Logistics and Transport","243"
    10"0018c00002DJIpRAAX","true","901","University of Arizona","9506"
    11"0018c00002DJIpSAAX","true","1350","United Oil & Gas Corp.","5467"
    12"0018c00002DJIpTAAX","true","1579","sForce","40000"
    13"0018c00002DJIpUAAX","true","2690","University of The Terrific","1257"

    エラーが発生したレコードの詳細を取得するには、failedResults リソースを使用します。完全な結果セットを参照していることを確認するには、unprocessedRecords リソースを使用します。「ジョブ未処理レコードの結果の取得」を参照してください。