【问题标题】:Time on page calculated only for specific segment in Adobe Analytics仅针对 Adob​​e Analytics 中的特定细分计算的页面停留时间
【发布时间】:2020-07-21 16:47:02
【问题描述】:

目标

我想查看已登录用户在页面上的时间。在用户未登录时从报告中消除时间。

能够区分用户未登录时的页面停留时间和用户登录时的页面停留时间。

设置

假设我们有:

  • 流量变量用户登录prop1,其中 truefalse
  • 流量变量上一个事件的时间作为prop2,单位为
  • eVar1 复制 prop1 |在 event5 后过期
  • eVar2 复制 prop2 |在 event5 后过期
  • event4 - 用户登录
  • event5 - 用户退出

事件之间的时间

来自一篇关于测量事件之间时间的文章 (https://experienceleaguecommunities.adobe.com/t5/adobe-analytics-questions/calculate-time-between-success-events/qaq-p/302787)

if (s.events && (s.events + ",").indexOf("event4,") > -1) {
  s.prop2 = "start"
}

if (s.events && (s.events + ",").indexOf("event5,") > -1) {
  s.prop2 = "stop"
}

s.prop2 = s.getTimeToComplete(s.prop2, "TTC", 0);


s.getTimeToComplete = new Function("v", "cn", "e", "var s=this,d=new Date,x=d,k;if(!s.ttcr){e=e?e:0;if(v=='start'||v=='stop')s.ttcr=1;x.setTime(x.getTime()+e* 86400000);if(v=='start'){s.c_w(cn,d.getTime(),e?x:0);return '';}if(v=='stop'){k=s.c_r(cn);if(!s.c_w(cn,'',d)||!k)return '';v=(d.getTime()-k)/1000;var td=86400,th=3600,tm=60,r=5,u,un;if(v>td){u=td;un='days';}else if(v>th){u=th;un='hours';}else if(v>tm){r=2;u=tm;un='minutes';}else{r=.2;u=1;un='seconds';}v=v*r/u;return (Math.round(v)/r)+' '+un;}}return '';");

花费时间概览

来自 adobe 文档 (https://docs.adobe.com/content/help/en/analytics/components/metrics/time-spent.html)

“序列”是一组连续的命中,其中给定变量 包含相同的值(无论是通过设置、向前传播还是 坚持)。例如,prop1 “A” 有两个序列:命中 1 和 2 和 hit 6. 最后一次访问的值不会开始新的序列 因为最后一击没有花费时间。在网站上花费的平均时间 在分母中使用序列。

所以我想我会使用 prop1 作为登录用户状态的分母来正确计算 prop2 中事件之间的时间。

问题

我不太确定,如果这种方法足以正确测量仅在用户登录时花费的时间。我会很感激一些提示,如何正确设置 eVars 或者我是否正确理解序列分母。

我还设置了带有终止 event5 的 eVar,但我不确定这是否会导致所需的行为。

如果您之前也解决过这个问题,请您指导我,您如何在报告中定义您的细分或条件。

【问题讨论】:

    标签: adobe-analytics


    【解决方案1】:

    GetTimeBetweenEvents 插件应该可以完成工作。但是,它似乎被重写了,我在文档示例调用中发现也使用 Launch 插件扩展: https://docs.adobe.com/content/help/en/analytics/implementation/vars/plugins/gettimebetweenevents.html

    来自 Adob​​e 文档

    使用 AppMeasurement 安装插件 复制并粘贴以下内容 分析跟踪后 AppMeasurement 文件中的任何位置的代码 对象被实例化(使用 s_gi )。保留 cmets 和版本 实施中的代码数量有助于 Adob​​e 排除任何潜在问题。

    /******************************************* BEGIN CODE TO DEPLOY *******************************************/
    /* Adobe Consulting Plugin: getTimeBetweenEvents v2.1 (Requires formatTime and inList plug-ins) */
    s.getTimeBetweenEvents=function(ste,rt,stp,res,cn,etd,fmt,bml,rte){var s=this;if("string"===typeof ste&&"undefined"!==typeof rt&&"string"===typeof stp&&"undefined"!==typeof res){cn=cn?cn:"s_tbe";etd=isNaN(etd)?1:Number(etd);var f=!1,g=!1,n=!1, p=ste.split(","),q=stp.split(",");rte=rte?rte.split(","):[];for(var h=s.c_r(cn),k,v=new Date,r=v.getTime(),c=new Date,a=0; a<rte.length;++a)s.inList(s.events,rte[a])&&(n=!0);c.setTime(c.getTime()+864E5*etd);for(a=0;a<p.length&&!f&&(f=s.inList(s.events,p[a]),!0!==f);++a);for(a=0;a<q.length&&!g&&(g=s.inList(s.events,q[a]),!0!==g);++a);1===p.length&&1===q.length&&ste===stp&&f&&g?(h&&(k=(r-h)/1E3),s.c_w(cn,r,etd?c:0)):(!f||1!=rt&&h||s.c_w(cn,r,etd?c:0),g&&h&&(k=(v.getTime()-h)/1E3,!0===res&&(n=!0)));!0===n&&(c.setDate( c.getDate()-1),s.c_w(cn,"",c));return k?s.formatTime(k,fmt,bml):""}};
    
    /* Adobe Consulting Plugin: formatTime v1.1 (Requires inList plug-in) */
    s.formatTime=function(ns,tf,bml){var s=this;if(!("undefined"===typeof ns||isNaN(ns)||0>Number(ns))){if("string"===typeof tf&&"d"===tf||("string"!==typeof tf||!s.inList("h,m,s",tf))&&86400<=ns){tf=86400;var d="days";bml=isNaN(bml)?1:tf/(bml*tf)} else"string"===typeof tf&&"h"===tf||("string"!==typeof tf||!s.inList("m,s",tf))&&3600<=ns?(tf=3600,d="hours", bml=isNaN(bml)?4: tf/(bml*tf)):"string"===typeof tf&&"m"===tf||("string"!==typeof tf||!s.inList("s",tf))&&60<=ns?(tf=60,d="minutes",bml=isNaN(bml)?2: tf/(bml*tf)):(tf=1,d="seconds",bml=isNaN(bml)?.2:tf/bml);ns=Math.round(ns*bml/tf)/bml+" "+d;0===ns.indexOf("1 ")&&(ns=ns.substring(0,ns.length-1));return ns}};
    
    /* Adobe Consulting Plugin: inList v2.1 */
    s.inList=function(lv,vtc,d,cc){if("string"!==typeof vtc)return!1;if("string"===typeof lv)lv=lv.split(d||",");else if("object"!== typeof lv)return!1;d=0;for(var e=lv.length;d<e;d++)if(1==cc&&vtc===lv[d]||vtc.toLowerCase()===lv[d].toLowerCase())return!0;return!1};
    /******************************************** END CODE TO DEPLOY ********************************************/
    

    那么您的 eVar 可能如下所示:

    s.eVar1 = s.getTimeBetweenEvents("event1", true, "event2", true, "", 0, "s", 2, "event3");
    

    【讨论】:

    • 谢谢 matej,这似乎正是我要找的东西
    猜你喜欢
    • 2023-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-23
    • 1970-01-01
    • 2022-09-23
    • 1970-01-01
    • 2014-11-11
    相关资源
    最近更新 更多