プログラマ38の日記

主にプログラムメモです。

Salesforce: 項目ID(初期値設定のパラメータ)の一覧を取得する。

エンティティ定義(EntityDefinition)の子オブジェクトに、項目定義(FieldDefinition )があります。項目定義(FieldDefinition )をselectすると、編集画面で初期値をセットする時に使う項目IDが取得できます。

 

Select
EntityDefinitionId
,DurableId
,QualifiedApiName
,Label
,Length
,DataType
From
FieldDefinition
where EntityDefinition.QualifiedApiName='Opportunity'

 取得するとこんな結果がとれます。

f:id:crmprogrammer38:20170330175419p:plain

取得結果の"DurableId"のピリオド以降が項目IDです。

新規ボタンクリック後の編集画面や、編集ボタンクリック後の編集画面で、初期値をセットする時に、URLパラメータで項目IDを指定すると初期値がセットできますが、項目IDを動的に取ることができます。(参照関係、主従関係の項目IDの頭には、"CF"はついていないので、自分でつける必要があります)

 

※そもそもURLパラメータで項目IDを使って初期値をセットすることが正式にサポートされているやり方ではないのですが、使わざるをえない場面もあると思います。

環境依存の項目IDが多いとリリース時の作業が大変なので動的に項目IDを取得することで多少は楽になるかなと思います。

 

注意点としては、

APIバージョンは33以上で使えます。

・項目レベルセキュリティが設定されてないとselect結果に含まれません。

・必ずオブジェクトの検索条件が必要です。(一度に複数オブジェクトの検索が可能です)

項目定義(FieldDefinition )には他にも便利な項目がたくさんありますが、一部オブジェクトで、ServiceDataTypeId , ValueTypeId をselectすると内部エラーが発生します。うっかり全項目selectするとはまります。
(今のところContactとOpportunityでエラーとなりました)