Loading
Salesforce から送信されるメールは、承認済ドメインからのみとなります続きを読む

キャンペーンメンバー履歴を取得する

公開日: Mar 31, 2026
説明
※この記事は英語版を翻訳しており、一部機械翻訳を含むため内容は後日更新される可能性があります。最新の内容は英語版を参照してください。表示言語は画面右下の言語名から切り替えられます。

標準機能ではキャンペーンメンバー履歴を取得できません。キャンペーンメンバーで履歴管理は利用できません。ただし、以下で説明する機能をカスタマイズして要件を確立できる場合があります。
解決策

1. CampaignMember の変更記録を保存する「CampaignMemberHistory」(CampaignHistory__c など) というカスタムオブジェクトを作成します。 


2. 次の 2 つの項目を作成します。
a) そのキャンペーンメンバーに関連付けられている「CampaignId__c」というキャンペーン ID を取得するキャンペーンを参照します。

b) 行った変更の説明を取得する「HistoryDetails__c」という最大文字数制限のあるリッチテキスト項目を作成します。

3. 以下に示すトリガーを CampaignMember に作成します。
 
Trigger HistoryTrack on CampaignMember (after insert, before update, before delete) {          
List<CampaignHistory__c> ch= new List<CampaignHistory__c>(); 
List<CampaignMember> cmOld= Trigger.old;  
List<String> changes  = new List<String>(); 
List<String> CampHisId  = new List<String>(); 
integer i=0;     
if(Trigger.isDelete){
            for(CampaignMember cm: Trigger.old ){     
                       String s;                            
                       s='Campaign Member id ' + cm.id + 
                       'is Deleted from campaign id: '+ cm.campaignId + 'by user '+ userinfo.getUserName();                                        
                       changes.add(s);
                       CampHisId.add(cm.campaignId);
                       CampaignHistory__c c= new CampaignHistory__c();               
                       c.Name='History'+DateTime.now();  
                       System.debug('CName:'+c.Name);
                       c.CampaignId__c=CampHisId[i];
                       System.debug('CampaignId:'+c.CampaignId__c);                              
                       c.HistoryDetails__c=changes[i];
                      System.debug('CHistory:'+c.HistoryDetails__c);         
                      ch.add(c);                              
                      i++;           
             } 
        }else {      
                      Trigger.new ){  
                            
                            if((Trigger.isUpdate)){
                                   if(cmOld[i].status!=cm.status){    
                                          s='on dated ' + DateTime.now() +                        
                                            ' status changed from ' + cmOld[i].status + ' to ' + cm.status +                        
                                            ' by user ' + userinfo.getUserName();
                                           
                                           changes.add(s);
                                          CampHisId.add(cm.campaignId);                                                  
                                                                    
                                          c.Name='History'+DateTime.now();
                                          System.debug('CName:'+c.Name);
                                          c.CampaignId__c=CampHisId[i];                        
                                          System.debug('CampaignId:'+c.CampaignId__c);                                      
                                          c.HistoryDetails__c=changes[i];
                                          System.debug('CHistory:'+c.HistoryDetails__c);
                                          ch.add(c); 
                                      }else if(cmOld[i].campaignId!=cm.campaignId){                        
                                                s='Changed Campaign id from : '+ cmOld[i].campaignId + 'to :' + cm.campaignId +                        
                                                    ' by user '+ userinfo.getUserName();  
                                              changes.add(s);                        
                                             CampHisId.add(cm.campaignId);                                                            
                                                                       
                                            c.Name='History'+DateTime.now();
                                            System.debug('CName:'+c.Name);              
                                            c.CampaignId__c=CampHisId[i];                   
                                           System.debug('CampaignId:'+c.CampaignId__c);                                          
                                            c.HistoryDetails__c=changes[i];
                                            System.debug('CHistory:'+c.HistoryDetails__c);                         
                                            ch.add(c);
                                         }             
                           }else if(Trigger.isInsert){                                
                                       s='A new Campaign Member id : ' + cm.id + ' is added to Campaign id :' + cm.campaignId +' by user '+ userinfo.getUserName();
                                       changes.add(s);                    
                                       CampHisId.add(cm.campaignId);                    
                                       System.debug('s>>>'+s);                                                                    
                                       
                                       c.Name='History'+DateTime.now();                   
                                       System.debug('CName:'+c.Name);
                                       c.CampaignId__c=CampHisId[i];
                                       System.debug('CampaignId:'+c.CampaignId__c);                                          
                                       c.HistoryDetails__c=changes[i];
                                       System.debug('CHistory:'+c.HistoryDetails__c);                                        
                                       ch.add(c);
                            } 
                                 
                       }         
                }    
                insert ch;
     }

4. キャンペーンに移動して [レイアウトを編集する] をクリックし、作成した [キャンペーン履歴] を選択してその他の必須項目を追加し、[保存] をクリックします。

これはサンプルコードであり、シナリオによっては動作しない場合があります。要件に合わせてコードを編集し、調整してください。

ナレッジ記事番号

000385967

 
読み込み中
Salesforce Help | Article