- Apexトリガーを使用する方法:
trigger ContactCountTrigger on Account (after insert, after update, after delete) {
// アカウントIDのセットを作成
Set<Id> accountIds = new Set<Id>();
if (Trigger.isInsert || Trigger.isUpdate) {
for (Account acc : Trigger.new) {
accountIds.add(acc.Id);
}
}
if (Trigger.isUpdate || Trigger.isDelete) {
for (Account acc : Trigger.old) {
accountIds.add(acc.Id);
}
}
// アカウントに関連する連絡先の数を計算
Map<Id, Integer> contactCounts = new Map<Id, Integer>();
for (AggregateResult ar : [SELECT AccountId, COUNT(Id) contactCount FROM Contact WHERE AccountId IN :accountIds GROUP BY AccountId]) {
Id accountId = (Id)ar.get('AccountId');
Integer count = (Integer)ar.get('contactCount');
contactCounts.put(accountId, count);
}
// アカウントのカスタムフィールドに連絡先数を設定
List<Account> accountsToUpdate = new List<Account>();
for (Account acc : [SELECT Id FROM Account WHERE Id IN :accountIds]) {
Integer contactCount = contactCounts.get(acc.Id);
acc.CustomContactCountField__c = contactCount;
accountsToUpdate.add(acc);
}
update accountsToUpdate;
}
上記のコードでは、アカウントの作成、更新、削除後にトリガーが発生し、関連する連絡先の数を計算してアカウントのカスタムフィールドに設定します。
- プロセスビルダーを使用する方法:
プロセスビルダーを使用してアカウントと連絡先の関連を監視し、アカウントのカスタムフィールドに連絡先の数を計算および設定するアクションを作成します。
- プロセスビルダーの設定:
- オブジェクト: Account
- スタート条件: アカウントが作成または更新されるとき
- アクション: 更新レコード
- フィールドの設定: カスタムフィールドに連絡先の数を計算して設定する
上記の方法を使用すると、アカウントに関連する連絡先の数を効果的に計算して追跡できます。選択した方法に基づいて、トリガーまたはプロセスビルダーを実装してください。