据我所知,谷歌现在似乎正在逐步淘汰analytics.js,转而使用他们的标签管理器。
如何为多个分析帐户触发 Google Analytics 新的 gtag 跟踪代码?
像这样的事情:
<script async src="https://www.googletagmanager.com/gtag/js?id=UA-108285779-2"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'UA-108285779-2');
gtag('config', 'ANOTHER CODE');
gtag('config', 'ANOTHER CODE');
</script>
简而言之:
Yes,您可以添加同类型产品的多次通过致电gtag('config', ...)
对于您拥有的每个 Google 帐户 + 媒体资源 ID。
Details:
现在是 2021 年,我也有同样的问题,但我太偏执了,无法相信该帖子投票最高的答案,因为它描述了与我在测试其工作原理时不同的经历。不过,首先,为了回答 OP 在 2021 年提出的问题,我们必须看看twoGoogle 官方文档中的条目,因为这两个条目都没有完全回答问题,但将它们放在一起可以让我们对如何解决这个问题更有信心:
-
我可以添加多个吗type产品使用
gtag('config', ...)
? (Answer: 是的。) (Docs https://developers.google.com/gtagjs/devguide/add)
-
我可以添加多个吗相同类型产品使用
gtag('config', ...)
? (Answer: 是的。) (Docs https://developers.google.com/analytics/devguides/collection/gtagjs/#configure_additional_google_analytics_properties)
下面是我如何使用 JavaScript 完成 OP 场景的示例片段。如果您在浏览器的控制台中尝试此操作,您应该会看到为您在以下代码段中设置的每个 ID 添加了一个唯一的脚本googleIds
array.
Notes:
- 请注意,该片段的
googleIds
数组包含五个 ID。
- 请注意,在浏览器控制台中运行该代码片段后,五个
<script>
标签被设置到页面,但代码片段本身只是显式构建并将其中一个标签设置为 .
- 其余标签在各自的 ID 被推送到 dataLayer 后以及第一个脚本初始化后(即元素被构造并设置为 )后添加。这两个步骤的顺序并不重要(即,您可以先初始化,然后将 ID 推送到数据层,或者将 ID 推送到数据层,然后初始化)。
// An array of IDs I want to load on the same page(s) at the same time
var googleIds = ["AW-00000000", "AW-00000001", "AW-00000002", "DC-00000000", "UA-00000000-1"];
// Setting dataLayer & gtag to window because I'm using a custom code text field in a tag management system
window.dataLayer = window.dataLayer || [];
window.gtag =
window.gtag ||
function() {
window.dataLayer.push(arguments);
};
window.gtag("js", new Date());
// Flag used to ensure script only set with first ID, and rest of IDs are pushed to dataLayer
var gtagScriptExists = false;
// ID validation regex. Only tested with AW-*, but DC & UA are also valid prefixes
var validIdStructure = new RegExp(/(AW|DC|UA)-[0-9]{8,}(-[0-9]{1,})?/);
// Push IDs into dataLayer and set initial gtag/js?id= script to page using first ID in googleIds array
for (var i = 0; i < googleIds.length; i++) {
var gtagId = googleIds[i];
// Validate that the ID being passed isn't a big weirdo
var idIsValid =
typeof gtagId === "string" && gtagId.match(validIdStructure);
if (idIsValid) {
window.gtag("config", gtagId);
// NOTE: gtag script only needs to be set to page once, but each gtag('config', <ID>) that's pushed to the dataLayer will add subsequent gtag/js?id=<ID> scripts to the page
if (!gtagScriptExists) {
// Set initial gtag/js?id=<first ID> script to <head>
var script = document.createElement("script");
script.type = "text/javascript";
script.async = true;
script.src = "//www.googletagmanager.com/gtag/js?id=" + gtagId;
document.getElementsByTagName("head")[0].appendChild(script);
// Update gtag/js?id= script status flag so this initialization script is only set for the first ID, and not all the IDs in the array
gtagScriptExists = true;
}
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)