レコードにファイルが添付されているかどうかを知りたい。
そんな要望を叶えるためのApexトリガ。
レコードに直接ファイルを添付すると、ContentDocumentLinkオブジェクトにファイル(ContentDocument)とレコードのリンク用レコードが登録されます。
また、レコードのフィードかコメントにファイルを添付した場合も同オブジェクトにレコードが登録されますので、Chatter経由のファイル添付でも動作します。
以下のコードは行動にファイルを添付された際に、行動のカスタム項目(Attached__c)をONにするコードです。
ファイルが削除された場合は考慮していませんので、厳密に実装するのであればdelete時に添付ファイルが1つも無ければOFFにする処理が必要となります。
trigger ContentDocumentLinkTrigger on ContentDocumentLink (before insert) {
//リンク先のレコードのIDを取得
Set ids = new Set();
for(ContentDocumentLink item : Trigger.new){
ids.add(item.LinkedEntityId);
}
//行動の添付フラグをONにする
List updList = new List();
for(Event item : [SELECT Attached__c FROM Event WHERE Attached__c=FALSE AND ID IN :ids]){
item.Attached__c = TRUE;
updList.add(item);
}
if(!updList.isEmpty()){
update updList;
}
}
コメントを残す