データ型
プリミティブデータ型に加えて、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 データ型」を参照してください。 .NET や WSC などのほとんどの Web サービスツールでは、API WSDL (Enterprise または Partner) で定義されたシンプルな ID 型を文字列に対応付けます。ただし、その他のツールでは、シンプルな ID 型を表すのに特定の ID クラスを生成します。詳細は、Web サービスツールキットのドキュメントを参照してください。 |
| 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 データ型」を参照してください。 |
データ型はプリミティブデータ型を拡張します。これらのデータ型の多くはメタデータで明示的に指定された一般的なデータ型変換に従っていますが、データ型によっては独自の特徴のあるものもあり、クライアントアプリケーションで使用する前には理解しておかなければなりません。
これらのデータ型は、標準項目とカスタム項目の両方に適用されます。DescribeSObjectResult の fields プロパティに記���されている、Field 型の type 項目で列挙されています。
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 を一意に識別します。
Salesforce ユーザインターフェースの ID 項目は、base-62 の文字を 15 個含み、大文字と小文字を区別します。15 個の文字にはそれぞれ数字 (0-9)、英小文字 (a-z)、英大文字 (A-Z) を指定できます。2 つの一意な ID が、大文字小文字のみが違う場合もあります。
Access のように 50130000000014c と 50130000000014C が違う ID であると区別しないアプリケーションもあるため、API コールを通じて 18 文字の大文字と小文字を区別しない ID を取得することもできます。18 文字の ID は、Force.com API でそれぞれの ID の末尾に文字を付け加えることで生成されます。18 文字の ID は、大文字と小文字を区別しないアプリケーションでも一意な識別が可能で、データの作成、編集、削除の API コールで使用できます。
18 文字の ID を 15 文字の ID に変換するには、最後の 3 文字を切り捨てます。Salesforce は 18 文字の ID の使用をお勧めしています。
JunctionIdList データ型
API バージョン 34.0 以降では、JunctionIdList データ型を使用して、エンティティの多対多リレーションを直接操作できます。基礎となる連結エンティティレコードを操作する必要はなくなりました。JunctionIdList 項目は、エンティティの他の項目と同様にクエリや更新ができます。JunctionIdList 項目へのクエリまたは更新は、基礎となる連結エンティティレコードへのクエリまたは更新として動作します。データ型 JunctionIdList の項目は、WSDL に ID 型の無制限の配列として表示されます。
他の項目と同様に JunctionIdList 項目をクエリします。TaskWhoIds JunctionIdList 項目を含む SOQL クエリの例を次に示します。
1SELECT Id, Subject, TaskWhoIds
2FROM Task
3WHERE LastModifiedDate > LAST_WEEKmultipicklist データ型
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 項目の名前の末尾は 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 データ型の有効な値でなければなりません。また、ユーザにはそのオブジェクトへの適切なアクセス権が必要です。正確な要件は項目ごとに異なります。