データ型
プリミティブデータ型に加えて、API では、項目の次のデータ型を定義します。
| 項目の型 | 項目に含まれる内容 |
|---|---|
| address | 住所項目データを含む複合データ型。「住所複合項目」を参照してください。 |
| anyType |
関連する項目によって、string、picklist、reference、boolean、currency、int、double、percent、ID、date、datetime、url、email データのいずれかを返す多様なデータ型。「anyType データ型」を参照してください。 |
| calculated | 数式によって定義されている項目。「calculated データ型」を参照してください。 |
| combobox | 列挙型値のセットを含むコンボボックスで、ユーザはリストにない値も指定できます。「comboBox データ型」を参照してください。 |
| currency | 通貨の値。「currency データ型」を参照してください。 |
| DataCategoryGroupReference | データカテゴリグループまたはカテゴリの一意名への参照。「DataCategoryGroupReference データ型」を参照してください。 |
| メールアドレス。「email データ型」を参照してください。 | |
| encryptedstring | 暗号化されたテキスト項目には、暗号化書式で格納された文字、数字、または記号の組み合わせを入力できます。最大文字数を 175 文字までに設定できます。API バージョン 11.0 以降で使用できます。 |
| ID | オブジェクトの主キー項目。「ID データ型」を参照してください。 |
| JunctionIdList | 基盤となる連結エンティティの多対多リレーションを表す参照 ID 値の文字列配列。1 回の API コールで基盤となる連結エンティティをクエリおよび操作するには、文字列配列をクエリおよび操作します。「JunctionIdList データ型」を参照してください。 |
| location | 地理位置情報項目の緯度と経度の値を含む複合データ型。「地理位置情報の複合項目」を参照してください。 |
| masterrecord | レコードがマージされた場合、保存されたレコードの ID (他のレコードは削除されます)。 |
| multipicklist | 複数の値を選択可能な列挙型値のセットを含んだ複数選択の選択リスト。「multipicklist データ型」を参照してください。 |
| percent | パーセント値。「percent データ型」を参照してください。 |
| phone | 電話番号。値には英字を含めることもできます。電話番号の書式は、クライアントアプリケーションが指定します。「phone データ型」を参照してください。 |
| picklist | 1 つの値を選択可能な列挙型値のセットを含んだ複数選択の選択リスト。「picklist データ型」を参照してください。 |
| reference | 別のオブジェクトへの相互参照。SQL の外部キー項目に似ています。「reference データ型」を参照してください。 |
| textarea | 複数行のテキスト項目として表示される文字列。「textarea データ型」を参照してください。 |
| url | URL 値。通常クライアントアプリケーションでは、URL はハイパーリンクとして表示されます。「url データ型」を参照してください。 |
データ型はプリミティブデータ型を拡張します。これらのデータ型の多くはメタデータで明示的に指定された一般的なデータ型変換に従います。ただし、データ型によっては独自の特徴のあるものもあり、クライアントアプリケーションで使用する前に理解しておかなければなりません。
これらのデータ型は、標準項目とカスタム項目の両方に適用されます。これらは、データ型type の type 項目で列挙されています (DescribeSObjectResult の fields プロパティに記述)。
anyType データ型
anyType データ型は動的であり、関連する項目によって string、date、number、boolean のいずれかを返します。たとえば、SOAP メッセージの要素には項目が string 型の場合、xsi:type="xsd:string" 属性があります。このデータ型は、NewValue および OldValue 項目の履歴オブジェクトで使用されます。また、fieldType および soapType の有効なデータ型でもあります。
calculated データ型
calculated 項目は、API の参照のみ項目です。これらの項目は、他の項目、式、または値から値を取得するアルゴリズムである数式で定義されています。これらの項目は SOQL で絞り込むことができますが、複製することはできません。calculated 項目のテキストの長さは 3900 文字以下で、この長さを超えたものは切り捨てられます。
calculated 項目は、Salesforce ユーザインターフェースでは数式項目と呼ばれます。
currency データ型
currency 項目には、Campaign の ExpectedRevenue 項目のように通貨の値が格納され、double 型として定義されます。
マルチ通貨が有効になっている組織では、currency 項目を持つすべてのオブジェクトで CurrencyIsoCode 項目が定義されています。CurrencyIsoCode 項目と currency 項目は特別な形でリンクされています。特定のレコードで、CurrencyIsoCode 項目はそのレコードの通貨を定義します。したがって、レコードのすべての currency 項目の値はこの通貨で表されます。
ほとんどの場合、お客様はオブジェクトの CurrencyIsoCode 項目と currency 項目のリンクについて考える必要はありません。ただし、次の点を考慮する必要があります。
- CurrencyIsoCode 項目は、複数通貨サポートを有効にしている組織にのみ存在します。
- ユーザインターフェースで通貨の値を表示するとき、それぞれの通貨の値の先頭に CurrencyIsoCode の値と空白の区切り文字を付けることをお勧めします。
- CurrencyIsoCode 項目は制限つき選択リスト項目です。CurrencyType オブジェクトで定義された設定可能な値は、組織ごとに異なる場合があります。組織で定義されていない値を設定しようとすると、操作が拒否されることがあります。
- オブジェクトの CurrencyIsoCode 項目を更新すると、そのオブジェクトのすべての通貨の値が暗黙的に新しい通貨コードに変換されます。その際、組織の Salesforce ユーザインターフェースで定義された変換レートが使用されます。その同じ update() コールで通貨の値を指定した場合、指定した新しい通貨の値は換算されずに新しい CurrencyIsoCode 項目値に設定されます。
- CurrencyIsoCode 項目の選択リストの値は、Salesforce に表示されている表示ラベルと完全には一致しません。
通貨の変換を行うには、クライアントアプリケーションから CurrencyType オブジェクトの CurrencyIsoCode を参照します。
DataCategoryGroupReference データ型
データカテゴリグループには、Salesforce ナレッジの記事のアンサー機能の質問を分類するカテゴリがあります。すべての記事および質問オブジェクトには、DataCategoryGroupReference 型の項目が 2 つあり、それぞれカテゴリグループとカテゴリ一意名が含まれます。describeDataCategoryGroups() および describeDataCategoryGroupStructures() コールを使用して、カテゴリグループとこれらのオブジェクトに関連付けられているカテゴリを取得できます。
email データ型
email 項目にはメールアドレスが格納されます。クライアントアプリケーションは、create() および update() コールで有効で適切な形式のメールアドレスを指定する必要があります。
ID データ型
例外はあるものの、API のすべてのオブジェクトに ID データ型の項目があります。これは Id という名の項目であり、オブジェクトの���コードごとに一意の識別子を含みます。これは、リレーショナルデータベース��主キーに似ています。create() で新しいレコードを作成すると、Web サービスは、組織のデータ内で一意となるようにレコードの ID 値を生成します。ID 項目に update() コールは使用できません。ID 値は変わることはないため、その後は API コールから ID 値を指定してレコードを参照できます。また、ID 値にはオブジェクトの種別を識別する 3 文字のコードが含まれます。クライアントアプリケーションは describeSObjects() コールでこのコードを取得できます。
カスタムオブジェクトを含む特定のオブジェクトには 1 つ以上の reference データ型の項目があり、関連するレコードの ID 値が格納されます。これらの項目の名前の最後には「Id」が付けられています。たとえば、取引先オブジェクトの OwnerId などです。OwnerId にはオブジェクトの所有者の ID が含まれています。Id という名前の項目とは異なり、reference 項目は外部キーに似ており、update() コールで変更できます。詳細は、「reference データ型」を参照してください。
retrieve() や delete() など、一部の API コールは、ID の配列をパラメータとして受け入れます。配列では各要素が取得または削除する行を一意に識別します。同様に、update() コールは sObject レコードの配列を受け取ります。各 sObject に Id 項目があり、sObject を一意に識別します。
15 文字と 18 文字の ID および大文字と小文字の区別
Salesforce の ID は通常、15 文字の base-62 文字列で表されます。15 個の文字にはそれぞれ数字 (0-9)、英小文字 (a-z)、英大文字 (A-Z) を指定できます。15 文字の ID は大文字と小文字が区別されます。Salesforce では、000000000000Abc は、000000000000aBC と同じではありません。
Microsoft Access™ など大文字と小文字を区別しないアプリケーションでは、15 文字の ID を使用しないでください。こうしたアプリケーションは、000000000000Abc を誤って 000000000000aBC と同じとみなします。
このような問題を回避するために、すべての API コールは大文字小文字のどちらにも対応する 18 文字の ID を返します。つまり、大文字と小文字を区別しないアプリケーションでも正しく照合されることになります。ID の末尾に追加されている 3 桁が、先行する 15 文字の大文字と小文字をエンコードします。データを作成、編集、削除するときは、すべての API コールで 18 文字の ID を使用します。
18 文字の ID を 15 文字のバージョンに変換する場合は、最後の 3 文字を切り捨てます。ただし、Salesforce では 18 文字の ID の使用をお勧めしています。
JunctionIdList データ型
API バージョン 34.0 以降、JunctionIdList データ型を使用して、エンティティの多対多リレーションを直接操作できます。基礎となる連結エンティティレコードを操作する必要はなくなりました。JunctionIdList 項目は、エンティティの他の項目と同様にクエリや更新ができます。JunctionIdList 項目へのクエリまたは更新は、基礎となる連結エンティティレコードへのクエリまたは更新として動作します。データ型 JunctionIdList の項目は、WSDL に ID 型の無制限の配列として表示されます。
JunctionIdList 項目は、他の項目と同じように問い合わせることができます。たとえば、次の SOQL クエリには、JunctionIdList 項目である TaskWhoIds が含まれています。
クエリ対象の項目の 1 つが JunctionIdList 型の場合、1 つの SOQL クエリで照会できるレコード総数の上限は 500 レコードです。クエリ内の ID 数が 500 件を超える場合、クエリは失敗し、MALFORMED_QUERY の例外が返されます。
制限は、(エンティティレコードの総数) × (エンティティの JunctionIdList 項目のレコード総数) が 500 以下であることです。たとえば、EventWhoIds JunctionIdList 項目を照会してイベントのリストを取得するとします。101 件のイベントがあり、各イベントの EventWhoIds JunctionIdList に 5 件のレコードが含まれます。つまり、SOQL クエリは合計で 505 件のレコードを照会し、500 の制限を超えるため、例外が発生します。
制限を超えないようにするには、クエリを再作成して連結 ID を 500 未満にするか、連結 ID の代わりに親子関係を照会してください。
multipicklist データ型
multipicklist 項目には、ユーザが複数のデータを選択可能な 1 つ以上のデータのリストが含まれます。データの 1 つをデフォルトデータに設定できます。選択は、セミコロンで区切られた一連の属性の文字列として保持されます。たとえば、クエリを実行すると、複数選択の選択リストの値が「1 つ目の値 ; 2 つ目の値 ; 3 つ目の値」として返されます。複数選択リストのクエリの詳細は、『Salesforce SOQL および SOSL リファレンス』の「複数選択リストのクエリ」を参照してください。
picklist データ型
picklist 項目には、ユーザが単一のデータを選択可能な 1 つ以上のデータのリストが含まれます。Salesforce ユーザインターフェースのドロップダウンリストとして表示されます。データの 1 つをデフォルトデータに設定できます。
DescribeSObjectResult に関連付けられた Field オブジェクトでは、restrictedPicklist 項目は、選択リストが制限されているかどうかを定義します。API は、create() または update() で推奨 (非制限) 選択リスト項目の値リストを適用しません。PicklistEntry のない非制限選択リスト項目を挿入するには、システムは「無効な」選択リストを作成します。この値は、Salesforce ユーザインターフェースで選択リストの値を追加すると「有効な」選択リストとなります。
無効な選択リストを新たに作成する場合、API は一致があるかどうかを確認します。この確認は大文字と小文字を区別しません。
DescribeSObjectResult に関連付けられた Field オブジェクトで、項目には、picklistValues 項目の配列が含まれます (PicklistEntry オブジェクト)。各 PicklistEntry はデータのラベル、値、選択リストのデフォルトデータであるかどうかを定義します (選択リストのデフォルト値は 1 つだけです)。
列挙型の項目では、ラベルのユーザ言語へのローカライズをサポートしています。たとえば、Account の Industry 項目の「Agriculture」という値はさまざまな言語に翻訳できます。列挙型の項目の値自体は固定であり、ユーザの言語に応じて変更されることはありません。ただし、それぞれの値固有の「ラベル」項目があり、その値のローカライズされたラベルが設定されています。項目を挿入または更新する場合は、必ず値を使用してください。query() コールは常に表示ラベルではなく値を返します。ユーザインターフェースでユーザに値を表示する場合は、describeSObjectResult 内の値に対応するラベルを使用してください。
API は、CaseStatus、ContractStatus、LeadStatus、OpportunityStage、PartnerRole、SolutionStatus、TaskPriority、TaskStatus について、特定の選択リストの取得をサポートしています。選択リストの値は、それぞれのオブジェクト名に対応しています。これらの選択リストのエントリは、状況が変換されたかどうかなど常に他の情報を指定します。クライアントアプリケーションは、これらのどのオブジェクト (CaseStatus など) に対しても query() コールを呼び出して選択リストの値セットを取得できます。その後、その情報を他のオブジェクト (Case オブジェクトなど) の処理で使用し、そのオブジェクト (ケースなど) の詳細な情報を取得できます。これらのオブジェクトは、API では参照のみがサポートされます。選択リストのデータの変更には、Salesforce ユーザインターフェースを使用する必要があります。
reference データ型
reference 項目は、別のオブジェクトの一意なレコード (通常は親レコード) を示す Id を含みます。reference 項目は、リレーショナルデータベースの外部キーの概念に似ています。命名規則では、reference 項目の名前の末尾は Id という文字です (CaseId または OpportunityId など)。たとえば、OpportunityCompetitor オブジェクトで、OpportunityId 項目は Opportunity オブジェクトを示す reference 項目です。この項目には、Opportunity レコードを一意に識別する ID 値が含まれます。
場合によって、オブジェクトは同じ種別の別のオブジェクトを参照できます。たとえば、Account は別の Account を示す親リンクを含むことができます。
Event オブジェクトと Task オブジェクトは、共に、WhoId と WhatId という相互参照型の ID 項目を含んでいます。これらの項目はそれぞれ、他のオブジェクトの 1 つを参照します。WhoId 項目は Contact または Lead を参照し、WhatId 項目は Account、Opportunity、Campaign、Case を参照します。また、WhoId 項目が Lead を参照している場合、WhatId 項目は空でなければなりません。
相互参照されるオブジェクトは、個々に記述して、照会することができます。クエリを実行すると、適切な種類のオブジェクトの ID が返されます。そのクエリの id 項目を使用し、その ID へのクエリを実行しオブジェクトについての詳細情報を取得できます。
相互参照型の ID 項目の値は次のいずれかになります。
- 組織で有効なレコード
- 空の参照を示す空の値
項目の値が null でない場合、組織のオブジェクトであることが保証されます。ただし、そのオブジェクトへのクエリの実行は保証されません。「すべてのデータの参照」権限を持つユーザは、いつでもそのオブジェクトへのクエリを実行できます。その他のユーザは、参照オブジェクトの表示または編集が制限される可能性があります。
create() または update() コールで相互参照型の ID 項目の値を指定する場合、その値は ID データ型の有効な値でなければなりません。また、ユーザにはそのオブジェクトへの適切なアクセス権が必要です。正確な要件は項目ごとに異なります。