GTM 和优化:JS 变量未定义但在控制台中运行良好

GTM & Optimize : JS Variable is undefined but in console it works well

我正在尝试在 Google 跟踪代码管理器中显示 Google 优化变体。

我尝试通过"Custom JavaScript Variable"实现它:

function() {
  var property = window.keys(gaData);
  var experiment_nr = window.keys(window.gaData[property].experiments);
  var experiment_value = window.values(window.gaData[property].experiments).toString()
  if (experiment_value == "") {
    return "0"
  } else {
    return experiment_value
  }
}

这是它的结果:

然后我尝试使用 5 秒延迟触发来测试我的代码:

这是 DevTools JS 控制台的结果:

如您所见,控制台不接受 GTM,但在我手动输入时接受。

有人可以帮我吗?

尝试使用 dataLayer 而不是 window 对象。

其实答案很简单。

Google Optimize 使用名为 _gaexp 的 cookie。 在那里,您会得到一个总结 Google 优化实验 ID 以及最后的版本的字符串: GAX1.2.wHL2IJUnSg2n8PB4iQH66w.18362.1

我所要做的就是创建一个新的变量来读取 cookie:

  1. 新变量
  2. Cookie 名称为“_gaexp”的第一方 Cookie

您当然可以通过从 DevTools 控制台调用 Cookies.get('_gaexp') 来获取带有 JavaScript 的 cookie 名称(以检查 cookie 值是否正确)

必须操纵 _gaexp 值以隔离变体:

  1. 新变量
  2. 自定义JavaScript
  3. 添加以下代码:
function (){
  if ({{GA_Optimize_Variable}}=='undefined'){
    return '0'
  } else {
    return {{GA_Optimize_Variable}}.charAt({{GA_Optimize_Variable}}.length-1)
  }
}

当 Google 优化将您的流量引导至网站的原始变体时,_gaexp 不存在。因此,需要一个if语句。

最后,您可以在 Google 分析事件 and/or 维度中使用您的变量。