我正在尝试将 Google Optimize 与 gtag.js 安装的 Analytics 结合使用,但在 Optimize UI 的某些部分出现错误,但在其他部分却没有。
这是我所做的:
- 按照说明“使用 gtag.js 设置分析跟踪”安装了 Google Analytics (并通过使用实时预览确认它正在工作)。
- 按照说明“使用全局站点标签 (gtag.js) 部署优化工具”设置 Google Analytics
- 添加了页面隐藏片段。
当我使用 Chrome 扩展程序设置实验时,Optimize 似乎正在按照 Google 的预期运行 - 请注意下面的屏幕截图中的感叹号图标没有显示数字(如果我删除了 Optimize 代码),然后单击它说“未检测到问题”。(此外,chrome 扩展的图标没有任何错误符号。)
但是,如果我随后预览原始版本或变体版本(单击 Optimise 中的“屏幕”图标),我会收到一个 javascript 警报,其中显示:
此页面上未正确安装 ID 为 GTM-abcdef 的容器的 Google 优化工具片段。要预览此实验的变体,请确保在您要测试的任何网页上都安装了 Google 优化工具代码段。
(我在上面用“abcdef”替换了我的实际容器 ID。)
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)};
我都试过了,没有任何效果。
我在这里做错了什么?