2022/07/15

SalesforceのBulk APIとは?使用例とともに使用方法を解説します!

 
  

SalesforceのBulk APIとは?

SalesforceのBulk APIとは非同期処理で大量データを操作できるRESTベースのAPIです。Bulk APIは非同期処理のため、実行結果をポーリングして確認する必要があります。 また、Bulk APIではCSVファイルをSalesforceのサーバーに送信し、大量データを操作することが可能です。

Bulk APIを使用する方法

cURLコマンドによる取引先の登録を例に、Bulk APIを使用する方法について「Salesforceにログインする」「ジョブを作成する」「取引先の登録バッチを追加する」「ジョブを終了する」「バッチの実行状況を確認する」というステップごとに解説します。

【Step1】Salesforceにログインする

Bulk APIは一括処理に特化したAPIのため、ログイン処理がサポートされていません。そのため、SOAP APIを利用して、Salesforceにログインします。 1.テキストファイルを「loginInfo.txt」という名前で作成し、ログイン情報を記述します。Salesforceのユーザー名を<n1:username>要素の値に、パスワードは<n1:password>要素の値に設定します。
<?xml version=""1.0"" encoding=""utf-8"" ?>
<env:Envelope xmlns:xsd=""http://www.w3.org/2001/XMLSchema""
    xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance""
    xmlns:env=""http://schemas.xmlsoap.org/soap/envelope/"">
  <env:Body>
    <n1:login xmlns:n1=""urn:partner.soap.sforce.com"">
     <n1:username>test_user1</n1:username>
      <n1:password>user1_password</n1:password>
    </n1:login>
  </env:Body>
</env:Envelope>
2.コマンドの{version}をAPIのバージョンに置き換えてから実行します。
curl https://login.salesforce.com/services/Soap/u/{version} -H ""Content-Type: text/xml; charset=UTF-8"" -H ""SOAPAction: login"" -d @loginInfo.txt
3.ログイン処理のレスポンスがXML形式で返ってきますので、次の内容を控えます。 ・<sessionId>要素の値 ・<serverUrl>要素内のホスト名の最初にあるインスタンス

【Step2】ジョブを作成する

取引先を登録するジョブを作成します。 1.テキストファイルを「jobInfo.txt」という名前で作成し、作成するジョブの情報を記述します。要素に次の値を入力します。 ・<operation> 操作種別 ・<object> 操作対象のオブジェクト ・<contentType> 操作時に利用するファイルの形式
<?xml version=""1.0"" encoding=""UTF-8""?>
<jobInfo xmlns=""http://www.force.com/2009/06/asyncapi/dataload"">
    <operation>insert</operation>
    <object>Account</object>
    <contentType>CSV</contentType>
</jobInfo>
2.コマンドを次の内容に置き換えてから実行します。 ・{instance} 【Step1】の<serverUrl>要素内のホスト名の最初にあるインスタンス ・{version} APIのバージョン ・{sessionId} 【Step1】の<sessionId>要素の値
curl https://{instance}.salesforce.com/services/async/{version}/job -H ""X-SFDC-Session: {sessionId}"" -H ""Content-Type: application/xml; charset=UTF-8"" -d @jobInfo.txt
3.ジョブ作成のレスポンスがXML形式で返ってきますので、<id>要素の値を控えます。

【Step3】取引先の登録バッチを追加する

取引先の登録バッチを追加します。 1.CSVファイルを「accountData.csv」という名前で作成し、登録する取引先情報を記述します。
""Name""
""取引先1""
""取引先2""
2.コマンドを次の内容に置き換えてから実行します。 ・{instance} 【Step1】の<serverUrl>要素内のホスト名の最初にあるインスタンス ・{version} APIのバージョン ・{jobId} 【Step2】の<id>要素の値 ・{sessionId} 【Step1】の<sessionId>要素の値
curl https://{instance}.salesforce.com/services/async/{version}/job/{jobId}/batch -H ""X-SFDC-Session: {sessionId}"" -H ""Content-Type: text/csv; charset=UTF-8"" --data-binary @accountData.csv
3.バッチ追加のレスポンスがXML形式で返ってきますので、<id>要素の値を控えます。

【Step4】ジョブを終了する

Salesforceへのバッチのデータ送信が完了したことを通知するために、ジョブを終了します。 1.テキストファイルを「closeJob.txt」という名前で作成し、ジョブ終了の情報を記述します。
<?xml version=""1.0"" encoding=""UTF-8""?>
<jobInfo xmlns=""http://www.force.com/2009/06/asyncapi/dataload"">
  <state>Closed</state>
</jobInfo>
2.コマンドを次の内容に置き換えてから実行します。 ・{instance} 【Step1】の<serverUrl>要素内のホスト名の最初にあるインスタンス ・{version} APIのバージョン ・{jobId} 【Step2】の<id>要素の値 ・{sessionId} 【Step1】の<sessionId>要素の値
curl https://{instance}.salesforce.com/services/async/{version}/job/{jobId} -H ""X-SFDC-Session: {sessionId}"" -H ""Content-Type: application/xml; charset=UTF-8"" -d @closeJob.txt

【Step5】バッチの実行状況を確認する

バッチの実行状況を確認します。 1.コマンドを次の内容に置き換えてから実行します。 ・{instance} 【Step1】の<serverUrl>要素内のホスト名の最初にあるインスタンス ・{version} APIのバージョン ・{jobId} 【Step2】の<id>要素の値 ・{batchId} 【Step3】の<id>要素の値 ・{sessionId} 【Step1】の<sessionId>要素の値
curl https://{instance}.salesforce.com/services/async/{version}/job/{jobId}/batch/{batchId} -H ""X-SFDC-Session: {sessionId}""
2.<state>要素の値がCompletedの場合、バッチの処理が完了したとなります。

Bulk APIを利用してみよう

今回は、SalesforceのBulk APIについて紹介しました。Bulk APIを利用すると、RESTベースで大量のデータを操作することが可能です。他システムからSalesforceにデータ連携を考えている方は、ぜひBulk APIの利用を検討してください。]]>

ITエンジニアへのキャリアチェンジならキャリアチェンジアカデミー

この記事の監修者・著者

株式会社オープンアップITエンジニア
株式会社オープンアップITエンジニア
未経験からITエンジニアへのキャリアチェンジを支援するサイト「キャリアチェンジアカデミー」を運営。これまで4500人以上のITエンジニアを未経験から育成・排出してきました。
・AWS、salesforce、LPICの合計認定資格取得件数:2100以上(2023年6月時点)
・AWS Japan Certification Award 2020 ライジングスター of the Year 受賞

おすすめの動画

  • 【未経験からIT業界へ転職するなら】相談窓口とスキルの獲得はここで解決!IT転職が一気に有利に!【キャリアチェンジアカデミー】

  • 【費用一切不要】未経験からIT業界へ転職するならまずはここへ相談!【キャリアチェンジアカデミー】

  • 【何のエンジニアになれるのか?】未経験からITエンジニアを目指すとこんな道がある【キャリアチェンジアカデミー】