SalesforceでSOAP APIを使ったレコードの更新

Salesforce APIを使ったレコードの更新方法を紹介します。

前回は「SalesforceでSOAP APIを使ったレコードの作成」という記事でレコードの作成方法を紹介しました。今回は作成したレコードを取得して、内容を変更して更新するという処理を作っていきます。

レコード更新メソッド

作成のときにも書きましたけど、更新の場合も同じで1回のAPI呼び出しで200件までのレコードしか扱うことができません。更新の場合も200件ごとに更新処理をしていく必要があります。

更新の場合も作成とほぼ同じ内容です。binding.createがbinding.updateに変わるだけの簡単なお仕事です。エラーのときの処理もまったく同じように書いています。この辺の詳しい説明は前回していますので、気になる場合はそちらを参照してください。

メインの更新処理

メインの処理では、商談レコードを取得して、内容を変更してUpdateメソッドに渡していきます。

今回は、前回作成した商談レコードを取得し、フェーズを「Needs Analysis」に変更しています。取得する際に必ずIdを入れるようにしてください。このIdがSalesforce上でレコードを特定するための、全世界で一意にレコードを識別できるSalesforce IDです。

このIdはSalesforce上でレコードを表示したときにURLに含まれているので、レコードを表示したときのURLをお気に入りに入れておくと、いつでもそのレコードにアクセスすることができます。レポートでIdを出力する場合、商談オブジェクトなら「商談 ID」、リードオブジェクトなら「リード ID」という名前の項目を出力項目に含めてあげれば、一覧で出すことができます。

完成形コード

完成形のコードを書いていきます。まずはメインの処理。

メインの処理では、初回に紹介したGetメソッドでデータを取得しています。取得する対象は商談オブジェクトで、取得項目はId、Name、StageName、CloseDateです。日本語に置き換えると「商談 ID」「商談名」「フェーズ」「完了予定日」です。条件としてLIKEを使って、商談名に対して「商談の名前」という文字を前方一致で指定しています。取得項目と条件設定はSOQLを使用して書いています。

取得したデータのフェーズを「Needs Analysis」に変更してUpdateメソッドに渡しています。この辺はそれほど難しい処理ではないかと思います。

次にSalesforceAccessクラスを書いていきます。

Getメソッド、Createメソッドに、今回のUpdateメソッドが加わって少し長くなってきています。Updateメソッドも特に説明は必要ないと思います。Createメソッドとほぼ同じでbinding.updateのところだけが違うだけです。

まとめ

実際に外部のシステムと連携する場合、対象のオブジェクトにカスタム項目として外部IDを保存するための項目を作っておき、レコード作成時に外部システムのIDも一緒に保存しておきます。こうすると、外部システム側でデータの変更があった場合、外部IDをキーにして更新対象のレコードを特定することができます。

また、Salesforceのデータストレージは基本的に少なめなので、あらゆるデータを保存しようとするのではなく、よく吟味してデータ連携するといいでしょう。1GBとか10GB単位で追加できますが、結構な料金が発生しますのでよく考えたほうがいいでしょう。

Follow me!

Feedlyで新着記事をチェックしよう!

Feedlyでフォローしておけば、新着記事をチェックすることができます。ぜひ、この機会にFeedlyに追加しておきましょう。