Javascript 如何在Google Analytics上添加独特的自定义指标

Javascript 如何在Google Analytics上添加独特的自定义指标,javascript,cookies,google-analytics,session-cookies,google-tag-manager,Javascript,Cookies,Google Analytics,Session Cookies,Google Tag Manager,考虑具有不同页面的web应用程序: 第1页有指向第2页的链接。第2页有指向第3页的链接,以此类推。以下是我试图实现的目标: 将+1添加到唯一页面1视图中,每次唯一 用户正在访问第1页 将+1添加到唯一页面1单击自定义 度量,每次用户单击链接时。但是,我只想统计每个用户的唯一链接点击次数(每个用户/会话仅增加1次自定义指标) 我想对第2页、第3页等做同样的处理 我提出的解决方案是使用Javascript在访问者的浏览器上放置会话cookie。因为我使用的是Google Tag Manager,

考虑具有不同页面的web应用程序:

第1页有指向第2页的链接。第2页有指向第3页的链接,以此类推。以下是我试图实现的目标:

  • 将+1添加到
    唯一页面1视图中,每次唯一
    用户正在访问第1页
  • 将+1添加到
    唯一页面1单击
    自定义 度量,每次用户单击链接时。但是,我只想统计每个用户的唯一链接点击次数(每个用户/会话仅增加1次自定义指标)
我想对第2页、第3页等做同样的处理

我提出的解决方案是使用Javascript在访问者的浏览器上放置会话cookie。因为我使用的是Google Tag Manager,所以我会先启动这个脚本(优先级设置为9999),然后设置并返回cookie值作为自定义度量值

如果cookie存在,我将返回0,如果它不存在,我将为自定义度量返回1。每次加载页面时或在用户单击链接之前,我都会运行此脚本,以便更新cookie

function setCookie(name, value) {
  document.cookie = name + '=' + value;
}

function getCookie(cname) {
  var cookie = [];
  var name = cname + "=";
  var decodedCookie = decodeURIComponent(document.cookie);
  var ca = decodedCookie.split(';');
  for(var i = 0; i < ca.length; i++) {
    var c = ca[i];
    while (c.charAt(0) == ' ') {
      c = c.substring(1);
    }
    if (c.indexOf(name) == 0) {
      cks.push(c.substring(name.length, c.length));
    }
  }
  
  if (cookie.length < 1) {
    return false;
  } else {
    return cookie; 
  }
}
  
function checkCookie(cname) {
  var nMetric = cname + 'MetricValue';
  var nPath = cname + 'Path';
  var path = window.location.origin + window.location.pathname;
  
  var ck = getCookie(nMetric);
  
  if (ck === false) {
    setCookie(nMetric, 1);
    setCookie(nPath, path);
    // console.log('No cookie set. Adding metric: 1. Path: ' + path);
    return;
  }
  
  var ck2 = getCookie(nPath);

  if (ck2 !== false && ck2.indexOf(path) > -1) {
    setCookie(nMetric, 0);
    // console.log('Cookie already exists based on path. Adding metric: 0. Path: ' + path);
  } else {
    setCookie(nMetric, 1);
    setCookie(nPath, path);
    // console.log('No cookie set. Based on Path check. Adding metric: 1, Setting path to: ' + path); 
  } 
  return;
}

checkCookie('uniquePageClick');
函数setCookie(名称、值){
document.cookie=name+'='+值;
}
函数getCookie(cname){
var-cookie=[];
变量名称=cname+“=”;
var decodedCookie=decodeURIComponent(document.cookie);
var ca=decodedCookie.split(“;”);
对于(变量i=0;i-1){
setCookie(nMetric,0);
//console.log('Cookie已基于路径存在。添加度量:0.path:'+path);
}否则{
setCookie(nMetric,1);
setCookie(nPath,path);
//log('未设置cookie。基于路径检查。添加度量:1,将路径设置为:'+Path);
} 
返回;
}
checkCookie('uniquePageClick');
此脚本是在用户的单击作为度量发送之前触发的。对于页面视图,我也有相同的代码,使用GA Pageload触发器以第一优先级触发

我已经用Google Tag Manager的预览模式测试了这个设置,它似乎工作得很好。我还检查了标记是否在其他任何操作之前触发+按预期更改度量值。然而,在我所做的实时测试中存在一些差异

有时我可以看到比页面浏览次数更多的独特点击次数,这表明一些访问者的点击被多次记录。我还测试了如果我很快加载页面2次,它有时会给我2个页面浏览量,而不是1个

我假设这与设置/更新/检索cookie的速度有关。我还尝试设置cookie,使其在几天内不会过期,但仍然得到相同的结果


我做错了什么?我可以在Javascript、标记管理器或Google Analytics上对此做些什么吗?这可能是比赛条件吗?如果是这样的话,有哪些步骤可以阻止这种情况发生?

你不能通过查看已经存在的“唯一页面浏览量”指标和“唯一事件”指标来实现你的目标吗?@XTOTHEL谢谢你的评论。不幸的是没有,因为我需要访问一个表中每个页面的信息。这就是我创建自定义指标的主要原因。类似这样的@XTOTHEL我希望第1页、第2页、第3页等度量是列,维度是“活动”、“来源”、“关键字”。这就是为什么我提出了自定义指标的想法。你可以引入“活动、来源、媒体、关键字等”作为专栏的一部分。因此,基本上你应该能够看到推动流量进入哪个页面的活动,以及该页面上发生的独特页面浏览量和独特事件的数量,再次按活动、来源、媒体、关键字等进行细分。