Google Analytics Gtag多个Google Analytics帐户跟踪ID

Amy*_*lle 6 google-analytics gtag.js

从我可以看到谷歌似乎逐步淘汰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>
Run Code Online (Sandbox Code Playgroud)

Xin*_*Xin 9

是的。您可以添加多个帐户,然后发送给所有帐户或单独发送。

设置

<script async src="https://www.googletagmanager.com/gtag/js?id=G-XXXXXX-1">
</script>
<script>
  window.dataLayer = window.dataLayer || [];
  function gtag(){dataLayer.push(arguments);}
  gtag('js', new Date());

  // Global configs
  gtag('config', 'G-XXXXXX-1');
  gtag('config', 'AW-YYYYYY');
  gtag('config', 'DC-ZZZZZZ');

</script>
Run Code Online (Sandbox Code Playgroud)

这是触发事件的地方

<script> 
  // This is place firing event
  // Send to all

  // Send to one: Measure Google Ads conversions
  gtag('event', 'conversion', {
      'send_to': 'AW-YYYYYY/AbC-D_efG-h12_34-567',
      'value': 1.0,
      'currency': 'USD'
  });

</script>
Run Code Online (Sandbox Code Playgroud)


bri*_*fit 8

是的,根据文档,这是正确的。但它没有为我生成有关后续代码的数据,直到我添加

<script async src="https://www.googletagmanager.com/gtag/js?id=ANOTHER_CODE"></script>
Run Code Online (Sandbox Code Playgroud)

紧邻代码块上方。要么是我偶然发现了一个工作杂凑,要么是谷歌需要更新他们的文档。

  • 看起来您想要接收页面视图事件的每个跟踪 ID,您都需要一个单独的“script”元素,并将“id”设置为您想要接收页面视图事件的跟踪 ID。有时您需要这个,有时则不需要 - 取决于用例。 (2认同)

小智 6

简而言之:

是的,您可以通过致电您拥有的每个相应 Google 帐户 + 资产 ID 来多次添加相同类型的产品。gtag('config', ...)

细节:

现在是 2021 年,我有同样的问题,但我太偏执了,无法相信这个帖子的最高投票答案,因为它在测试其工作原理时描述了与我自己不同的体验。不过,首先,为了在 2021 年回答 OP 的问题,我们必须查看Google 官方文档中的两个条目,因为这两个条目都没有完全回答问题,但是将它们放在一起后可以让我们对如何解决这个问题更有信心:

  • 我可以添加多个类型使用的产品 gtag('config', ...)答案:是。)(文档
  • 我可以添加多个相同类型的产品 gtag('config', ...)吗?答案:是。)(文档

这是我如何使用 JavaScript 完成 OP 场景的示例片段。如果您在浏览器的控制台中尝试此操作,您应该会看到为您在以下代码段googleIds数组中设置的每个 ID 添加了一个唯一的脚本。

笔记:

  • 请注意,代码段的googleIds数组包含五个 ID。
  • 请注意,在浏览器控制台中运行代码段后,<script>页面上设置了五个标签,但代码段本身仅显式构建并将其中一个标签设置为 .
  • 其余的标签在它们各自的 ID 被推送到数据层之后,以及在第一个脚本初始化之后(即元素被构造 + 设置为 )被添加。这两个步骤的顺序无关紧要(即您可以先初始化然后将您的ID推送到dataLayer,或者将您的ID推送到dataLayer然后进行初始化)。

// 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;
    }
  }
}
Run Code Online (Sandbox Code Playgroud)


Nah*_*uel 2

根据文档,这似乎是执行此操作的官方方法。

  • 本文档用于添加其他产品,即 Google Ads,而不是其他 Analytics 跟踪 ID。 (2认同)