LoginSignup
0
2

More than 5 years have passed since last update.

【ネタ】Chatterで”ぬるぽ”したら、”ガッ”するトリガ

Posted at

練習用のネタトリガです。
初心者のApexトリガ学習の参考に(なるのか?)

1.どこから登録すれば良いのか。

Chatterが出たばっかりのときは、オブジェクト構成が色々複雑でめんどくさかったのですが、今はシンプルになってて楽ちんです。
- Feedに対するトリガ:[設定] -> [カスタマイズ] -> [Chatter] -> [トリガ] -> [FeedItem トリガ]
- Commentに対するトリガ:[設定] -> [カスタマイズ] -> [Chatter] -> [トリガ] -> [FeedComment トリガ]

2.Feedトリガ

サンプルコードは以下です。
今回は手を抜いて練習用なのでわかりやすくするために、トリガ直書きしてますが、実際には先人達が積み上げてくれたあのテンプレとか、このテンプレとかそのテンプレを使ったりしていい感じに実装しましょう。

trigger EX_FeedItemTrigger on FeedItem(after insert, after update) {
  ID responseUserId = '005280000030xHe';
  List<FeedComment> insComments = new List<FeedComment>();

  if(Trigger.isInsert && Trigger.isAfter) {
    for(FeedItem f : Trigger.new) {
      //ぬるぽしたら、ガッ!する
      if(f.Body.contains('ぬるぽ')) {
        insComments.add(new FeedComment(
               FeedItemId = f.Id
            , CommentBody = '<b><i>ガッ!</i></b>'
            , CommentType ='TextComment'
            , CreatedById = responseUserId
             , IsRichText = true
        ));
      }
    }
  }

  if(Trigger.isUpdate && Trigger.isAfter) {
    for(FeedItem f : Trigger.new) {
      //更新で新たにぬるぽした場合も、ガッ!する
      if(f.Body.contains('ぬるぽ')
      && !(Trigger.oldMap.get(f.Id).Body.contains('ぬるぽ'))) {
        insComments.add(new FeedComment(
               FeedItemId = f.Id
            , CommentBody = '<b><i>ガッ!</i></b>'
            , CommentType ='TextComment'
            , CreatedById = responseUserId
            , CreatedDate = f.CreatedDate
             , IsRichText = true
        ));
      }
    }
  }

  if(!insComments.isEmpty()) insert insComments;
}

3.Commentトリガ

見てるオブジェクトが違うだけど、ほぼFeedトリガと一緒です。

trigger EX_FeedCommenTrigger on FeedComment(after insert, after update) {
  ID responseUserId = '005280000030xHe';
  List<FeedComment> insComments = new List<FeedComment>();

  if(Trigger.isInsert && Trigger.isAfter) {
    for(FeedComment c : Trigger.new) {
      //ぬるぽしたら、ガッ!する
      if(c.CommentBody.contains('ぬるぽ')) {
        insComments.add(new FeedComment(
               FeedItemId = c.FeedItemId
            , CommentBody = '<b><i>ガッ!</i></b>'
            , CommentType = 'TextComment'
            , CreatedById = responseUserId
             , IsRichText = true
        ));
      }
    }
  }

  if(Trigger.isUpdate && Trigger.isAfter) {
    for(FeedComment c : Trigger.new) {
      //更新で新たにぬるぽした場合も、ガッ!する
      if(c.CommentBody.contains('ぬるぽ')
        && !(Trigger.oldMap.get(c.Id).CommentBody.contains('ぬるぽ'))) {
        insComments.add(new FeedComment(
               FeedItemId = c.FeedItemId
            , CommentBody = '<b><i>ガッ!</i></b>'
            , CommentType = 'TextComment'
            , CreatedById = responseUserId
            , CreatedDate = c.CreatedDate
             , IsRichText = true
        ));
      }
    }
  }

  if(!insComments.isEmpty()) insert insComments;
}
0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2