住所複合項目
標準住所 (Salesforce の標準オブジェクトに組み込まれている住所) には、構造化された複合データ型である Address としてだけでなく、個別の住所要素として、SOAP と REST API でアクセスできます。
Address 型は、複合地理位置情報項目に使用されるデータ型である Location 型を拡張します。API 30.0 以降の SOAP と REST API では、標準住所を、次の項目を組み合わせる構造化されたデータ型である Address 型の複合項目として使用できます。
| 項目 | 型 | 説明 |
|---|---|---|
| Accuracy | picklist | 住所の地理コードの精度レベル。たとえば、この項目は Contact では MailingGeocodeAccuracy と呼ばれます。 |
| City | string | 住所の市区郡の詳細。たとえば、この項目は Contact では MailingCity と呼ばれます。 |
| Country | string | 住所の国の詳細。たとえば、この項目は Contact では MailingCountry と呼ばれます。 |
| CountryCode | picklist | 住所の ISO 国コード。たとえば、この項目は Contact では MailingCountryCode と呼ばれます。CountryCode は、組織で州/国選択リストが有効であるかどうかに関係なく、複合住所項目で常に使用できます。 |
| Latitude | double | Longitude と一緒に使用して、住所の正確な地理位置情報を指定します。たとえば、この項目は Contact では MailingLatitude と呼ばれます。 |
| Longitude | double | Latitude と一緒に使用して、住所の正確な地理位置情報を指定します。たとえば、この項目は Contact では MailingLongitude と呼ばれます。 |
| PostalCode | string | 住所の郵便番号。たとえば、この項目は Contact では MailingPostalCode と呼ばれます。 |
| State | string | 住所の都道府県の詳細。たとえば、この項目は Contact では MailingState と呼ばれます。 |
| StateCode | picklist | 住所の ISO 都道府県コード。たとえば、この項目は Contact では MailingStateCode と呼ばれます。StateCode は、組織で州/国選択リストが有効であるかどうかに関係なく、複合住所項目で常に使用できます。 |
| Street | textarea | 住所の町名・番地の詳細。たとえば、この項目は Contact では MailingStreet と呼ばれます。 |
住所項目は、取引先、取引先責任者、見積、ユーザなどの多くの標準オブジェクトで提供されています。一部のオブジェクトには、複数の住所のための項目があります。たとえば、取引先に 4 つの異なる住所があるとします。この場合、BillingAddress、ShippingAddress のように、住所項目名の前に住所の種別が付けられます。
住所が地理コード化されると、緯度項目と経度項目に座標が入力されます。関連する地理位置情報項目も入力されます。通常、地理コードサービスプロバイダによって住所が地理コード化され、地理コードの精度が評価されます。
精度サブ項目 GeocodeAccuracy には、地理コード化された位置の精度データが保存されます。外部地理位置情報アプリケーションは、API を介して地理コード化された住所の精度レベルを取得できます。API を介して住所を取得するときに、精度データが含まれます。必要に応じて、単独で精度情報を取得することもできます。
その親と同様に、複合 [住所] 項目、GeocodeAccuracy 項目は標準オブジェクトの標準住所項目でのみ使用できます。
複合住所項目の取得
複合項目を使用すると、特に SOQL クエリで住所を処理するコードを簡略化できます。SOQL SELECT 句では、個別のすべてのコンポーネント項目を参照するのではなく、住所を直接参照できます。
1SELECT Name, BillingAddress
2FROM AccountAPI 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