我想衡量代表打开新潜在客户所需的时间,但无法弄清楚如何使用潜在客户历史记录对象中的日期/时间戳记的时间成分运行报表。我可以看到我做一个简单的“显示领导历史”的时间,但无法弄清楚如何针对该领域运行报告。
由于
汤姆
答案 0 :(得分: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.');
}