function readOnly(count){ }
Starting November 20, the site will be set to read-only. On December 4, 2023,
forum discussions will move to the Trailblazer Community.
+ Start a Discussion
tsutsumi-ttsutsumi-t 

活動履歴オブジェクトをApexトリガとする方法について

こんにちは。質問させてください。

活動履歴(ActivityHistory)オブジェクトのレコードが新規作成されたことをトリガとして、別オブジェクトのレコード更新を行いたいのですが、
ApexトリガおよびApexクラスで実現する方法がありましたら、ご教示頂けますでしょうか。

新規トリガを作成するには、該当する S オブジェクトトリガページに移動した上で作成しなければならず、
活動履歴をトリガとする方法がわかりませんでした。

宜しくお願い致します。
takamatakama
ビルド→カスタマイズ→活動より「ToDoのトリガ」「行動のトリガ」のいずれかを選択ください。
過去の行動を登録するなら「行動のトリガ」でよいと思います。
tsutsumi-ttsutsumi-t
ご回答ありがとうございます。
トリガに関しては、行動のトリガから作成できそうです。
この場合は、行動オブジェクト内の項目に対しての処理(Insertやupdate)のみ行えるのでしょうか。

最終的にやりたいことは、
(1):活動履歴が新規作成されたことをトリガとして処理をスタート …「行動のトリガ」にて実現
(2):(1)で新規作成された値を取得
(3):(2)で取得した値で、別のカスタムオブジェクトの項目をUpdateさせる。
となります。

上記の方法についてご存知であればご教示頂けますでしょうか。
takamatakama
トリガ内でも通常のApexクラスと同じく他オブジェクトの操作は可能です。
もちろん新規作成された行動オブジェクトの情報から、更新したいカスタムオブジェクトをSELECTする必要があります。
あるカスタムオブジェクトに対する活動履歴を作成し、そのカスタムオブジェクトへの更新なら、
活動履歴の「WhatId」にカスタムオブジェクトのレコードIDが格納されています。

注意点1)
あるオブジェクトに対する活動履歴に対する操作に限定したい場合、「WhatId」に
格納されているレコードIDの上3桁で該当オブジェクトか判断する必要があります。
たとえば「CustomObject__c」を対象とした場合は、下記「keyPrefix」と
レコードIDの上3桁が一致すれば、該当オブジェクトと判定できます。
 
Schema.DescribeSObjectResult dsr = CustomObject__c.sObjectType.getDescribe();
String keyPrefix = dsr.getKeyPrefix();

注意点2)
トリガの実装に関しては、以下に注意してください。
https://developer.salesforce.com/page/Trigger_Frameworks_and_Apex_Trigger_Best_Practices (https://developer.salesforce.com/page/Trigger_Frameworks_and_Apex_Trigger_Best_Practices" target="_blank)
https://developer.salesforce.com/page/Apex_Code_Best_Practices

----------------------------------------
なお、日本語で記載されるなら、日本語のForum側にUpされた方が回答される方が多くなると思います。
tsutsumi-ttsutsumi-t
ご回答ありがとうございました。
教えていただいた方法でUpdateできました。
日本語Forumについてもご案内頂きましてありがとうございました。