プログラマ38の日記

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

Salesforce: Id.getSobjectType() を使ってオブジェクトを特定する。

親オブジェクトがどれかを判断したいときがある

 

添付ファイル(Attachment)の 参照先 ID(ParentId)

ToDo(Task)の 関連先 ID(WhatId)
行動(Event)の 関連先 ID(WhatId)

など複数の参照先オブジェクトを指定できる項目があります。

 

トリガ処理などで、特定のオブジェクトの時に動かしたい処理があって、その時には、Id.getSobjectType() で特定ができます。

 

 

例えば、顧客の添付ファイルは、Excel以外はエラーにしたいという要件があったとします。

for( Attachment row : Trigger.New ){
if( row.parentid.getSobjectType() == Account.sobjecttype) {
if( row.Name.endsWithIgnoreCase('.xlsx') == false
&& row.Name.endsWithIgnoreCase('.xls') == false ) {
row.addError('Excelファイルを登録してください。');
}
}
}

こんな風にして、参照先のオブジェクトの判断ができます。

 

この関数を知らなくてオブジェクトのキープレフィックスを取得して、IDの頭3桁で比較したり、その前は、IDをSetにつめこんで、オブジェクトを1回検索して判断していました。

昔書いたコードは大分無理をしていました。。