如何在Salesforce中进行潜在客户历史报告?

时间:2012-11-19 21:31:57

标签: salesforce force.com

我想衡量代表打开新潜在客户所需的时间,但无法弄清楚如何使用潜在客户历史记录对象中的日期/时间戳记的时间成分运行报表。我可以看到我做一个简单的“显示领导历史”的时间,但无法弄清楚如何针对该领域运行报告。

由于

汤姆

1 个答案:

答案 0 :(得分:0)

我认为你不能轻易地报告这个问题:/我喜欢被证明是错误的。

当你只有一把锤子时,一切看起来像钉子,嗯?

您可以在报告中获得开放日期,但不是“开放和创建潜在客户之间的秒数”。我已经检查过了,你似乎甚至无法通过创建一个工作流程来作弊,这个工作流程会在将开头标记为已打开时触发。

sample lead history report


如果您可以将类似报告的详细信息导出到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.');
}