担当者が新しいリードを開くのにかかる時間を測定したいのですが、リード履歴オブジェクトの日付/タイム スタンプの時間コンポーネントを使用してレポートを実行する方法がわかりません。簡単な「リード履歴の表示」を行った時間はわかりますが、そのフィールドに対してレポートを実行する方法がわかりません。
ありがとう
トム
担当者が新しいリードを開くのにかかる時間を測定したいのですが、リード履歴オブジェクトの日付/タイム スタンプの時間コンポーネントを使用してレポートを実行する方法がわかりません。簡単な「リード履歴の表示」を行った時間はわかりますが、そのフィールドに対してレポートを実行する方法がわかりません。
ありがとう
トム
これについて簡単に報告できるとは思いません :/ でも、間違っていることが証明されることを望みます。
ハンマーしか持っていないときは、すべてが釘のように見えますね。
レポートでオープニングの日を取得できますが、実際には「オープニングとリード作成の間の秒数」ではありません。私が確認したところ、リードを開封済みとしてマークすると起動するワークフローを作成してもごまかすことはできないようです。
同様のレポートの詳細を Excel にエクスポートして数式を作成しても問題ない場合は、その方法をお勧めします。本当に 100% Salesforce である必要がある場合、Apex と Visualforce を使用したことがありますか? リードの開始を検出するトリガーをリードに記述し、時間差をカスタム フィールドに書き込むことができます。
または、これに似たコードがデータ ソースとなる VF ページを作成することもできます。私のデータでは、それが出力します
平均して、ユーザー 005 が 2 つのリードを開くのに 160917287 秒かかりました。
(2007 年からの膨大な数であることは知っています)。
Map<Id, Long> timeCounter = new Map<Id, Long>(); // Counter how much time has passed between lead creation and opening of the record for each lead owner
Map<Id, Integer> leadCounter = new Map<Id, Integer>(); // counter how many were actually opened
for(LeadHistory lh : [SELECT CreatedDate, OldValue, NewValue, Lead.Name, Lead.OwnerId, Lead.CreatedDate
FROM LeadHistory
WHERE Field = 'IsUnreadByOwner' AND Lead.isUnreadByOwner = false
ORDER BY Lead.OwnerId
LIMIT 1000]){
Long timeInSeconds = (lh.CreatedDate.getTime() - lh.Lead.CreatedDate.getTime()) / 1000;
Long totalTimeCount = timeCounter.get(lh.Lead.OwnerId);
Integer totalLeadCount = leadCounter.get(lh.Lead.OwnerId);
if(totalTimeCount == null){
totalTimeCount = timeInSeconds;
totalLeadCount = 1;
} else {
totalTimeCount += timeInSeconds;
totalLeadCount += 1;
}
timeCounter.put(lh.Lead.OwnerId, totalTimeCount);
leadCounter.put(lh.Lead.OwnerId, totalLeadCount);
}
for(Id userId : timeCounter.keyset()){
Decimal avg = timeCounter.get(userId) / leadCounter.get(userId);
System.debug('On average it took ' + avg + ' seconds to for user ' + userId + ' to open ' + leadCounter.get(userId) + ' leads.');
}