intra-mart Accel Platform IM-LogicDesigner仕様書 第14版 2019-12-01

4.2.5.1.12. Salesforce SOQL

処理種別(タイプ)Salesforce SOQLは、Salesforceクエリを行うユーザ定義タスクです。
本章では処理種別(タイプ)Salesforce SOQLに関する詳細仕様を説明します。

4.2.5.1.12.1. 入力値/返却値

処理種別(タイプ)Salesforce SOQLでは、入力値/返却値をそれぞれ以下のように定義します。

4.2.5.1.12.1.1. 入力値

クエリに定義したSOQLのパラメータを定義します。
入力値に定義したパラメータは、クエリに定義したパラメータと紐付きます。
  • nextRecordsUrl
    • クエリの識別子

4.2.5.1.12.1.2. 返却値

定義したクエリの実行結果を定義します。
クエリのSELECT句で指定したオブジェクト項目を records 配下に定義する必要があります。
これらの値はクエリの呼び出し結果が返ってきた際に、システムが自動でマッピングします。
デフォルトで定義されている項目は以下の通りです。
  • records
    • クエリの実行結果として取得されたレコード一覧
  • totalSize
    • レコード件数
  • done
    • 完了フラグ
  • nextRecordsUrl
    • クエリの識別子

コラム

クエリの識別子 nextRecordsUrl について

全件取得でない場合、返却値の最後に nextRecordsUrl 項目が含まれます。
すべてのレコードが取得されるまで、入力値に前回の返却値の nextRecordsUrl を指定し、この操作を繰り返します。
1回のクエリで取得するレコード数は「バッチサイズ」で指定します。指定がない場合、デフォルト値は 2,000、最小値は 200、最大値は 2,000 です。

4.2.5.1.12.2. クライアントID

定義済みSalesforceクライアント設定からクライアントIDを選択します。

4.2.5.1.12.3. バッチサイズ

1回のクエリで取得するレコード数を定義します。
1回のクエリで取得するレコード数を制限しない場合は、「全件取得する」チェックボックスをオンにします。

4.2.5.1.12.4. バージョン

Salesforce APIバージョンを選択します。

4.2.5.1.12.5. クエリ

ユーザ定義タスクの実行処理部分のクエリ(SOQL)を定義します。

4.2.5.1.12.6. 入力値/返却値のデータ型

入力値、および、返却値のデータ型は、対応する Salesforce オブジェクトの項目のデータ型に合わせて定義します。
記載していないデータ型、および、記載していないデータ型の組み合わせはサポートしていません。

コラム

Salesforce オブジェクトのデータ型については、Salesforce の以下のドキュメントを参照してください。

4.2.5.1.12.6.1. 入力値

nextRecordsUrl 以外の入力値を定義する場合、入力値のデータ型は以下を参照して定義してください。
データ型
Salesforce
データ型
IM-LogicDesigner
補足
boolean
boolean

calculated
補足参照
Salesforce で数式の戻り値に指定したデータ型に合わせて定義してください。
combobox
email
ID
multipicklist
phone
picklist
reference
string
textarea
url
string
または
character
Salesforce SOQL定義タスクがSOQLに入力値を埋め込む際、入力値の前後に単一引用符を付与します。
また、入力値に含まれるバックスラッシュ、単一引用符、二重引用符は、バックスラッシュでエスケープします。
double
currency
percent
double

int
integer

date
date
または
calender
または
sqldate
Salesforce の date型は、時間の値が含まれません。(yyyy-MM-dd)
Salesforce SOQL定義タスクは、SOQLに入力値を埋め込む際に入力値を yyyy-MM-dd に変換します。
入力値は、intra-mart Accel Platformのシステムタイムゾーンに合わせて変換された日付がSOQLへの埋め込み値に利用されます。
そのため、入力値のフォーマットによって以下の例のように日付がずれてしまう場合があるので、注意してください。
例1. 入力値を協定世界時(UTC)で指定した場合(日付がずれない)
  • システムのタイムゾーン : Asia/Tokyo
  • 入力値 : 2016-07-31T00:00:00.000Z
  • Salesforce SOQL定義タスクが変換した後の値:2016-07-31T15:00:00.000+0900
  • SOQLへの埋め込み値 : 2016-07-31
例2. 入力値を協定世界時(UTC)で指定した場合(日付がずれる)
  • intra-mart Accel Platformのシステムタイムゾーン : Asia/Tokyo
  • 入力値 : 2016-07-31T15:00:00.000Z
  • Salesforce SOQL定義タスクが変換した後の値:2016-08-01T00:00:00.000+0900
  • SOQLへの埋め込み値 : 2016-08-01
例3. 入力値をシステムタイムゾーンに合わせて指定した場合(日付はずれない)
  • intra-mart Accel Platformのシステムタイムゾーン : Asia/Tokyo
  • 入力値 : 2016-07-31T15:00:00.000+0900
  • Salesforce SOQL定義タスクが変換した後の値:2016-07-31T15:00:00.000+0900
  • SOQLへの埋め込み値 : 2016-07-31
dateTime
imdatetime
または
sqltimestamp
Salesforce SOQL定義タスクがSOQLに入力値を埋め込む際、入力値をISO8601 フォーマットに変換します。

コラム

Salesforceの date、および、dateTime型と、IM-LogicDesignerの string 型について

Salesforceの date、および、dateTime型に対して、IM-LogicDesignerのデータ型を string で定義した場合は、SOQL実行時にエラーが発生します。

IM-LogicDesignerのデータ型を string で定義した場合、Salesforce SOQL定義タスクが SOQL に入力値を埋め込む際に入力値の前後に単一引用符を付与します。 一方SOQLでは、日付形式を使用する fieldExpression の場合、日付は単一引用符で囲みません。このため、SOQL実行時にエラーが発生します。

SOQLの日付形式に関する仕様に関しては、以下のドキュメントを参照してください。

4.2.5.1.12.6.2. 返却値

records 配下に返却値を定義する場合、返却値のデータ型は以下を参照して定義してください。
データ型
Salesforce
データ型
IM-LogicDesigner
補足
base64
string
time
anyType
combobox
email
encryptedstring
ID
multipicklist
phone
picklist
reference
textarea
url
string  
boolean boolean  
calculated 補足参照 Salesforce で数式の戻り値に指定したデータ型に合わせて定義してください。
date
string
返却値のデータ型は、IM-LogicDesignerの string 型で定義してください。

Salesforce の date型は、時間の値が含まれません。(yyyy-MM-dd)
返却値のデータ型を IM-LogicDesignerのdate型で定義した場合、返却値は、intra-mart Accel Platformのシステムタイムゾーンを基準とした日時として解釈されます。
そのため、変換後の値を Salesforce へ連携した場合、以下のように日付がずれる場合があります。

  • Salesforce の値 : 2016-08-01
  • intra-mart Accel Platformのシステムタイムゾーン : Asia/Tokyo
  • IM-LogicDesigner で変換後の値 : 2016-07-31T15:00:00.000Z (=2016-08-01T00:00:00.000+0900)
  • 変換後の値を、再度 Salesforce のdate型に連携した場合の Salesforce の値 : 2016-07-31
dateTime
date
 
double
currency
percent
double
 
int
interger