こんにちは!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 の複合項目を扱ってみました。
複合項目のフィールドを指定してオブジェクトとして取得することもできますし、各項目フィールドを指定して取得することもできるので、利用用途に合わせてうまく使っていきたいです。
どなたかのお役に立てば幸いです。それでは!