2

我正在尝试将 Google Optimize 与 gtag.js 安装的 Analytics 结合使用,但在 Optimize UI 的某些部分出现错误,但在其他部分却没有。

这是我所做的:

  1. 按照说明“使用 gtag.js 设置分析跟踪”安装了 Google Analytics (并通过使用实时预览确认它正在工作)。
  2. 按照说明“使用全局站点标签 (gtag.js) 部署优化工具”设置 Google Analytics
  3. 添加了页面隐藏片段

当我使用 Chrome 扩展程序设置实验时,Optimize 似乎正在按照 Google 的预期运行 - 请注意下面的屏幕截图中的感叹号图标没有显示数字(如果我删除了 Optimize 代码),然后单击它说“未检测到问题”。(此外,chrome 扩展的图标没有任何错误符号。)

谷歌优化 Chrome 扩展没有错误

但是,如果我随后预览原始版本或变体版本(单击 Optimise 中的“屏幕”图标),我会收到一个 javascript 警报,其中显示:

此页面上未正确安装 ID 为 GTM-abcdef 的容器的 Google 优化工具片段。要预览此实验的变体,请确保在您要测试的任何网页上都安装了 Google 优化工具代码段。

(我在上面用“abcdef”替换了我的实际容器 ID。)

Chrome 扩展程序图标在单击时也会显示错误和类似的消息(我在这里涂黑了实验名称):

谷歌优化 Chrome 扩展程序图标错误

这是我的 HTML<head>部分(已编辑 ID):

我已经将此脚本与“使用全局站点标签 (gtag.js) 部署优化”中的示例进行了比较,它们看起来相同,只是我的代码包含真实 ID:

<head>
    <meta charset="UTF-8">

    <!-- Page hiding snippet (recommended)  -->
    <style>.async-hide { opacity: 0 !important} </style>
    <script>(function(a,s,y,n,c,h,i,d,e){s.className+=' '+y;h.start=1*new Date;
    h.end=i=function(){s.className=s.className.replace(RegExp(' ?'+y),'')};
    (a[n]=a[n]||[]).hide=h;setTimeout(function(){i();h.end=null},c);h.timeout=c;
    })(window,document.documentElement,'async-hide','dataLayer',4000,
    {'GTM-zyxzyx':true});</script>

    <!-- Global site tag (gtag.js) - Google Analytics -->
    <script async src="https://www.googletagmanager.com/gtag/js?id=UA-abcdef"></script>
    <script>
      window.dataLayer = window.dataLayer || [];
      function gtag(){dataLayer.push(arguments);}
      gtag('js', new Date());
      gtag('config', 'UA-abcdef', { 'optimize_id': 'GTM-zyxzyx'});      
    </script>

    <title></title>
</head>

我已经针对本地运行的站点(在 Flask 的网络服务器,端口 5000 上)和部署到 Heroku 上的站点进行了尝试,两种情况下的行为都是相同的。

我还尝试删除页面隐藏代码段,但这没有帮助。

我也尝试过实际运行实验,但即使将替代版本设置为 100% 流量,也总是看到原始变体,所以它在那里不起作用。(我只针对本地站点尝试过这个,没有针对 Heroku 实例尝试过。)

值得注意的是,GA 代码中有这一行:

function gtag(){dataLayer.push(arguments);}

我在网上看到过这种形式,最后是分号:

function gtag(){dataLayer.push(arguments)};

我都试过了,没有任何效果。

我在这里做错了什么?

4

1 回答 1

0

I don't know if this is correct, but should the hiding snippet be using the ID UA-abcdef?

If you’re using Google Tag Manager to deploy Optimize, populate the page-hiding snippet with your Tag Manager container ID, not your Optimize container ID. Learn more about using Optimize with a tag-management system (from here: https://support.google.com/optimize/answer/7100284?hl=en)

I'm not sure whether deploying the code this way is classed as deploying Optimize with Google Tag Manager though. What do others think?

于 2018-10-04T10:10:57.660 回答