住所複合項目
標準住所 (Salesforce の標準オブジェクトに作成される住所) は、構造化された複合データ型である Address および個別の住所要素として、SOAP と REST API からアクセスできます。
API 30.0 以降の SOAP と REST API では、標準住所を、次の項目を組み合わせる構造化されたデータ型である Address 型の複合項目として使用できます。
- Accuracy
- City
- Country
- CountryCode
- Latitude
- Longitude
- PostalCode
- State
- StateCode
- Street
住所項目は、取引先、取引先責任者、見積、ユーザなどの多くの標準オブジェクトで提供されています。一部のオブジェクトには、複数の住所のための項目があります。たとえば、取引先に 4 つの異なる住所があるとします。この場合、BillingCity、BillingState のように、住所項目名の前に住所の種別が付けられます。
住所は地理コード化され、緯度項目と経度項目に座標が入力されます。関連する地理位置情報項目も入力されます。通常、地理コードサービスプロバイダによって住所が地理コード化され、地理コードの精度が評価されます。
精度サブ項目 GeocodeAccuracy には、地理コード化された位置の精度データが保存されます。外部地理位置情報アプリケーションは、API を介して地理コード化された住所の精度レベルを取得できます。API を介して住所を取得するときに、精度データが含まれます。必要に応じて、単独で精度情報を取得することもできます。
その親と同様に、複合 Address 項目、GeocodeAccuracy 項目は標準オブジェクトの標準住所項目でのみ使用できます。
複合住所項目の取得
複合項目を使用すると、特に SOQL クエリで住所を処理するコードを簡略化できます。SOQL SELECT 句では、個別のすべてのコンポーネント項目を参照するのではなく、住所を直接参照できます。
1SELECT Name, BillingAddress
2FROM Account
API 30.0 以前および API 30.0 以降と互換性があるコードを作成するには、個別の項目を使用します。
1SELECT Name, BillingStreet, BillingCity, BillingState, BillingPostalCode,
2 BillingCountry, BillingLatitude, BillingLongitude
3FROM Account複合住所項目の値は、構造化されたデータ型 Address として返されます。複合住所項目を処理するコードでは、返される値の個別のコンポーネントを参照する必要があります。次のサンプルコードを参照してください。
SOAP API を使用した標準住所の複合項目の取得
次の Java メソッドでは、Salesforce SOAP API を使用して、取引先責任者リストの [住所(郵送先)] を取得および表示します。
1// Modified version of code in the SOAP API QuickStart
2private void querySample() {
3 String soqlQuery = "SELECT FirstName, LastName, MailingAddress FROM Contact";
4 try {
5 QueryResult qr = connection.query(soqlQuery);
6 boolean done = false;
7
8 if (qr.getSize() > 0) {
9 System.out.println("\nLogged-in user can see "
10 + qr.getRecords().length + " contact records.");
11
12 while (!done) {
13 System.out.println("");
14 SObject[] records = qr.getRecords();
15 for (int i = 0; i < records.length; ++i) {
16 Contact con = (Contact) records[i];
17 String fName = con.getFirstName();
18 String lName = con.getLastName();
19
20 // Access the compound address field MailingAddress
21 Address addr = (Address) con.getMailingAddress();
22 String streetAddr = "";
23 if (null != addr) streetAddr = addr.getStreet();
24
25 if (fName == null) {
26 System.out.println("Contact " + (i + 1) + ": " + lName +
27 " -- " + streetAddr);
28 } else {
29 System.out.println("Contact " + (i + 1) + ": " + fName +
30 " " + lName +
31 " -- " + streetAddr);
32 }
33 }
34
35 if (qr.isDone()) {
36 done = true;
37 } else {
38 qr = connection.queryMore(qr.getQueryLocator());
39 }
40 }
41 } else {
42 System.out.println("No records found.");
43 }
44 } catch (ConnectionException ce) {
45 ce.printStackTrace();
46 }
47}場所としての複合住所項目の使用
複合住所項目には、緯度項目と経度項目があります。住所項目は、SOQL の WHERE 句と ORDER BY 句で場所として使用できます。たとえば、サンフランシスコに最も近い 10 件の取引先を取得する GEOLOCATION 関数を使用する SOQL クエリは次のようになります。
1SELECT Id, Name, BillingAddress
2FROM Account
3WHERE DISTANCE(BillingAddress, GEOLOCATION(37.775,-122.418), 'mi') < 20
4ORDER BY DISTANCE(BillingAddress, GEOLOCATION(37.775,-122.418), 'mi')
5LIMIT 10