見出し画像

【Salesforce】REST APIで複数項目を更新・登録する

-ごあいさつ-

はじめまして!CREFILでコンサルタントをしています伊藤と申します。
私はいまSalesforceを使用した案件に携わっていまして、主にSalesforceと外部のデータ連携を行う領域を担当しています。
この記事では、SalesforceのREST APIを使用して、Salesforceの複数のレコードを一度のコールで登録・更新する方法について紹介いたします!

-Salesforce REST APIとは?-

REST APIはBulk API・SOAP API比較して、コーディングにはJSONを用いるため少ないコーディングで済むほか、Salesforce上のオブジェクトへの項目の取得・追加・更新・削除といった標準操作を一通り行えます!

-このテーマを取り上げた理由について-

これからAPI連携を行う方、API連携に興味を持っている方へのナレッジの提供が目的となっています!
また、実際に自分がAPI連携を行っていて以下のような経験をしました。
(1)調べてもなかなか出てこない・・・
(2)検索にヒットしても英語の記事だった(見づらい)
(3)Salesforceの公式リファレンスが文字のみで、画像が無い
この記事が上記のような手間や悩みの解消に繋がれば幸いです!

-①認証情報(OAuth)の設定をしてみる-

メソッド:POST
https://(使用しているSalesforceのURL)/services/oauth2/token
Bodyのform-dataには下記をセット
client_id : コンシューマ鍵(Salesforce)
client_secret:コンシューマの秘密(Salesforce)
grant_type : password
username : Salesforceユーザ名
password : Salesforceユーザのパスワード+セキュリティトークン

▲Sendを押下後、成功すれば下記のようなコードがレスポンスとして表示されます。
{
    "access_token": "(英数字記号)",
    "instance_url": "https://my.salesforce.com",
    "id": "https://test.salesforce.com/id/(SFId)",
    "token_type": "Bearer",
    "issued_at": "(数字)",
    "signature": "(英数字記号)"
}

-②一度に複数の項目を登録してみる-

さて、ここから本題に入ります。
認証情報(OAuth)の設定をしてみるの項でレスポンスとして取得した"access_token"をHeaderに設定して、一回のコールで複数の項目を登録してみましょう!
メソッド:POST
Header部には下記をセット
Authorization:Bearer+半角スペース+①で取得したaccess_token
Content-Type:application/json

▲POSTメソッドは以下の通り
https://(使用しているSalesforceのURL)/services/data/v54.0/composite/sobjects

次に、Bodyタグのrawに登録する対象のオブジェクト登録したい項目を下記のような形式でセットします。

{
    "records": [
       {
            "attributes" : {"type" : "オブジェクト名__c","referenceId" : "ref1"},
            "項目名__c": "登録する任意の値"
        },
       {
            "attributes" : {"type" : "オブジェクト名__c","referenceId" : "ref2"},
            "項目名__c": "登録する任意の値"
        },
       {
            "attributes" : {"type" : "オブジェクト名__c","referenceId" : "ref3"},
            "項目名__c": "登録する任意の値"
        }
    ]
}

POSTメソッドとBodyタグをセットしたら、後は「Send」を押せば次のようなレスポンスが返ってくるはずです。

▲Status:200でJSONの中の"success"が"True"となっていれば登録成功です!

注意しておく点としては、Salesforce側のガバナ制限によって基本的に1回のコールにつき最大200件の登録が限度です。(更新についても同様。)
(※ご契約されているエディションによっては、それ以上のコールが可能な場合があります。)

-③一度に複数の項目を更新してみる-

続いて、今度は一回のコールで複数の項目を更新してみましょう!
まずはHeader部に登録処理と同様に必要なキーをセットします。
次に、HTTPメソッドにPATCHメソッドを記述します。

▲HTTPメソッドについてはPOSTメソッドと同じ内容です。

次に、Bodyタグのrawに更新する対象のオブジェクト更新したい項目を下記のような形式でセットします。

{
    "records": [
       {
            "attributes" : {"type" : "オブジェクト名__c","referenceId" : "ref1"},
            "id" : "更新する対象のSFId",
            "項目名__c": "更新する任意の値"
       },
       {
            "attributes" : {"type" : "オブジェクト名__c","referenceId" : "ref2"},
            "id" : "更新する対象のSFId",
            "項目名__c": "更新する任意の値"
       },
       {
            "attributes" : {"type" : "オブジェクト名__c","referenceId" : "ref3"},
            "id" : "更新する対象のSFId",
            "項目名__c": "更新する任意の値"
       }
    ]
}

PATCHメソッドとBodyタグをセットしたら、後は「Send」を押せば次のようなレスポンスが返ってくるはずです。

▲Status:200でJSONの中の"success"が"True"となっていれば更新成功です!

-終わりに-

いかがでしたでしょうか。
今回はSalesforceのREST APIを使用して一度に複数の項目を登録・更新する方法を紹介いたしました!
REST APIをこれから初めて使用する方、複数の項目の登録・更新で困っている方に向けた記事となっていますので、ぜひ活用していただけたら嬉しいです。
ご一読いただきありがとうございました!