Cookies 存储在cookie中的Google Analytics ID未定义

Cookies 存储在cookie中的Google Analytics ID未定义,cookies,google-analytics,google-tag-manager,Cookies,Google Analytics,Google Tag Manager,我们正在通过谷歌标签管理器安装谷歌分析。 我们有一个定制变量,它应该接受GA客户id,并将其发送给我们的GA。 变量定义如下: function() { try { var cookie = {{GA_ID_Cookie}}.split("."); return cookie[2] + "." + cookie[3]; } catch(e) { return 'N/A'; } } 而{{GA_ID_Cookie}是名为“\u GA”的第一方Cookie变量。

我们正在通过谷歌标签管理器安装谷歌分析。 我们有一个定制变量,它应该接受GA客户id,并将其发送给我们的GA。 变量定义如下:

function() {
  try {
    var cookie = {{GA_ID_Cookie}}.split(".");
    return cookie[2] + "." + cookie[3];
  } catch(e) {
    return 'N/A';
  }
}
而{{GA_ID_Cookie}
是名为“
\u GA
”的第一方Cookie变量。 在大多数情况下,该值都有效,但在某些情况下,
GA\u ID\u Cookie
未定义(并引发异常)

这在所有浏览器中都会发生。有足够多的用户“不适用”,所以这不是关于禁用cookies的问题

GTM在页面视图事件上安装GA;它使用这个有问题的变量作为自定义维度


我的问题是为什么ga id为空,我们如何克服这个问题并以其他方式获取id。

很可能在生成cookie之前就触发了标记。
尝试将页面视图更改为窗口加载。清除cookie并重试,它应该可以工作

正如Ashley所指出的您可能面临一种竞争条件,即在GA设置cookie之前尝试访问cookie

请注意,从识别用户的角度来看,GA cookie ID包含一些不感兴趣的信息,即应该删除的版本

如果您的GA cookie如下所示:

_ga=GA1.2.1033501218.1368477899;
那么你感兴趣的部分是:

1033501218.1368477899
要通过浏览器检索客户端ID,官方方式如下:

如果您使用的是GTM,则需要创建一个任务:

如果希望通过服务器检索客户端ID,则只需使用您选择的HTTP库解析
cookie
HTTP头(下面的示例是从request to stackoverflow网站),并去掉表示cookie版本的前导
GA\d\.\d\.
模式

cookie: prov=f67bae3b-f99c-2f22-84fc-7c2a62862f3d; _ga=GA1.2.1380536973.1571212618; ...
function() {
  return function(model) {
    return model.get('clientId');
  };
}
cookie: prov=f67bae3b-f99c-2f22-84fc-7c2a62862f3d; _ga=GA1.2.1380536973.1571212618; ...