Newer Version Available
Chatter オブジェクトのトリガー
FeedItem および FeedComment オブジェクトのトリガーを記述できます。
FeedItem、FeedAttachment、および FeedComment のトリガーに関する考慮事項
- 種別が TextPost、QuestionPost、LinkPost、HasLink、ContentPost、HasContent の FeedItem のみを挿入できます。そのため、before トリガーまはた after insert トリガーを呼び出します。ユーザー状況の更新によって FeedItem トリガーは実行されません。
- FeedPost オブジェクトは API バージョン 18.0、19.0、20.0 でサポートされていましたが、21.0 より前のバージョンで保存された挿入トリガーや削除トリガーは使用しないでください。
- FeedItem では、次の項目を before insert トリガーで使用できません。
- ContentSize
- ContentType
さらに、ContentData 項目は、すべての削除トリガーで使用できません。
-
FeedItem オブジェクトのトリガーは、その添付ファイルおよび機能情報が保存される前に実行されます。つまり、ConnectApi.FeedItem.attachment 情報と ConnectApi.FeedElement.capabilities 情報はトリガーでは使用できないことがあります。
添付ファイルおよび機能の情報は、ConnectApi.ChatterFeeds.getFeedItem メソッド、ConnectApi.ChatterFeeds.getFeedElement メソッド、ConnectApi.ChatterFeeds.getFeedPoll メソッド、ConnectApi.ChatterFeeds.getFeedElementPoll メソッド、ConnectApi.ChatterFeeds.postFeedItem メソッド、ConnectApi.ChatterFeeds.postFeedElement メソッド、ConnectApi.ChatterFeeds.shareFeedItem メソッド、ConnectApi.ChatterFeeds.shareFeedElement メソッド、ConnectApi.ChatterFeeds.voteOnFeedPoll メソッド、ConnectApi.ChatterFeeds.voteOnFeedElementPoll メソッドから使用することはできません。
- FeedAttachment はトリガー可能なオブジェクトではありません。フィード添付は、FeedItem の update トリガー内の SOQL クエリを介してアクセスできます。次に例を示します。
1trigger FeedItemTrigger on FeedItem (after update) { 2 3 List<FeedAttachment> attachments = [SELECT Id, Title, Type, FeedEntityId 4 FROM FeedAttachment 5 WHERE FeedEntityId IN :Trigger.new ]; 6 7 for (FeedAttachment attachment : attachments) { 8 System.debug(attachment.Type); 9 } 10} - 関連付けられた添付のあるフィード項目を挿入すると、初めに FeedItem が挿入され、次に FeedAttachment レコードが作成されます。関連付けられた添付のあるフィード項目が更新される場合、初めに FeedAttachment レコードが挿入され、次に FeedItem が更新されます。この順序で操作した結果、Salesforce Classic では、FeedAttachment が Update および AfterInsert トリガーで使用可能になります。添付が Lightning Experience を通じて実行される場合は、update トリガーと AfterInsert トリガーの両方で使用できますが、AfterInsert トリガーでは、future メソッドを使用して FeedAttachment にアクセスします。
- 次のフィード添付操作を行うと、FeedItem の update トリガーが起動されます。
- FeedItem に FeedAttachment が追加された結果、FeedItem 種別が変更される。
- FeedItem から FeedAttachment が削除された結果、FeedItem 種別が変更される。
- 関連付けられた FeedItem が変更されない FeedAttachment の挿入や更新の場合は、FeedItem トリガーは起動されません。
- before update、after update の FeedItem トリガーの FeedAttachment は挿入、更新、または削除できません。
- FeedComment の before insert および after insert トリガーの場合、FeedComment に関連付けられた ContentVersion の項目 (FeedComment.RelatedRecordId により取得) は使用できません。
Chatter トリガーのその他の考慮事項
- Apex コードは、Chatter コンテキストで実行するときにセキュリティを強化します。非公開グループに投稿するには、コードを実行するユーザーがそのグループのメンバーである必要があります。実行ユーザーがメンバーでない場合は、FeedItem レコードで CreatedById 項目をそのグループのメンバーに設定できます。
- CollaborationGroupMember が更新されると、メンバー数を正確にするため CollaborationGroup も自動的に更新されます。その結果、CollaborationGroupMember の update または delete トリガーを実行すると、CollaborationGroup の update トリガーも実行されます。