JSforce で Salesforce の複合項目を扱う
こんにちは!DA(データアナリティクス)事業本部 サービスソリューション部の大高です。
Salesforceのオブジェクトにおけるフィールドには「複合項目」という特殊なフィールドがあります。
例えば住所のデータは複合項目として構造化されたデータとして格納されています。ざっくりとしたイメージとしては以下のような感じです。
Address ┣ Country ┣ State ┣ City … ┗ PostalCode
この「複合項目」を「JSforce」で取得する際に、どうのようにデータを扱えばよいかを簡単に説明したいと思います。
JSforceのAPIについて
JSforceのAPI機能は、こちらのドキュメントから実際に動作を確認することができます。当エントリでもこちらを利用しています。
複合項目を扱う
単純に複合項目を指定してクエリを発行する
まずは何も考えずに単純にクエリを投げて結果を見てみます。
conn.query("SELECT Id, Name, BillingAddress FROM Account", function(err, result) { console.log('Id:', result.records[0].Id) console.log('Name:', result.records[0].Name) console.log('BillingAddress:', result.records[0].BillingAddress) });
すると、以下のように構造化されたデータが取得できることが分かります。
Id: 0015i000005GOgFAAW Name: United Oil & Gas, Singapore BillingAddress: { "city": "Singapore", "country": null, "geocodeAccuracy": null, "latitude": null, "longitude": null, "postalCode": null, "state": "Singapore", "street": "9 Tagore Lane\nSingapore, Singapore 787472\nSingapore" }
このことから「住所項目はオブジェクトとして取得されている」ことが分かります。
例えばcity
のみ取得したい場合には、以下のようにすれば良いことが分かります。
conn.query("SELECT Id, Name, BillingAddress FROM Account", function(err, result) { console.log('Id:', result.records[0].Id) console.log('Name:', result.records[0].Name) console.log('BillingAddressCity:', result.records[0].BillingAddress.city) });
Id: 0015i000005GOgFAAW Name: United Oil & Gas, Singapore BillingAddressCity: Singapore
個別の項目を直接指定してクエリを発行する
次に、個別の項目を直接指定してクエリを発行してみます。ここではBillingCity
をクエリで指定しています。
conn.query("SELECT Id, Name, BillingCity FROM Account", function(err, result) { console.log('Id:', result.records[0].Id) console.log('Name:', result.records[0].Name) console.log('BillingCity:', result.records[0].BillingCity) });
Id: 0015i000005GOgFAAW Name: United Oil & Gas, Singapore BillingCity: Singapore
こちらの方法ではクエリで指定するフィールドは変わりますが、同様にデータを取得することができますね。他の項目を指定したい場合には、同様にBillingXXX
を指定することになります。
まとめ
以上、JSforce で Salesforce の複合項目を扱ってみました。
複合項目のフィールドを指定してオブジェクトとして取得することもできますし、各項目フィールドを指定して取得することもできるので、利用用途に合わせてうまく使っていきたいです。
どなたかのお役に立てば幸いです。それでは!