2

担当者が新しいリードを開くのにかかる時間を測定したいのですが、リード履歴オブジェクトの日付/タイム スタンプの時間コンポーネントを使用してレポートを実行する方法がわかりません。簡単な「リード履歴の表示」を行った時間はわかりますが、そのフィールドに対してレポートを実行する方法がわかりません。

ありがとう

トム

4

1 に答える 1

0

これについて簡単に報告できるとは思いません :/ でも、間違っていることが証明されることを望みます。

ハンマーしか持っていないときは、すべてが釘のように見えますね。

レポートでオープニングの日を取得できますが、実際には「オープニングとリード作成の間の秒数」ではありません。私が確認したところ、リードを開封済みとしてマークすると起動するワークフローを作成してもごまかすことはできないようです。

リード履歴レポートのサンプル


同様のレポートの詳細を 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.');
}
于 2012-11-20T00:57:46.513 に答える