2

我想测量代表打开新潜在客户所需的时间,但无法弄清楚如何使用潜在客户历史对象中日期/时间戳的时间组件运行报告。我可以看到我执行简单的“显示潜在客户历史记录”但不知道如何针对该字段运行报告的时间。

谢谢

汤姆

4

1 回答 1

0

我不认为你可以轻易地报告这个:/ 不过我很想被证明是错误的。

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

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

样品铅历史报告


如果您可以将类似报告的详细信息导出到 Excel 并在那里构建公式,我会推荐这条路线。如果它真的必须在 Salesforce 中达到 100% - 你曾经使用过 Apex 和 Visualforce 吗?您可以在潜在客户上编写一个触发器,以检测潜在客户的开放并将时间差写入某个自定义字段。

或者,您可以创建一个 VF 页面,将与此类似的代码作为数据源。对于我的数据,它输出

用户 005... 平均需要 160917287 秒才能打开 2 个潜在客户。

(我知道这是一个巨大的数字,它们来自 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 回答