谷歌分析Gtag多个分析账户跟踪ID

36

据我所见,Google似乎正在逐步淘汰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>

5
应该是正确的,请看这里 - Confuzing
2
我有一个类似的问题,但在我的情况下,我得到了两个不同的ID。现在我应该添加另一个带有第二个ID的script src标签吗? - Niklas
1
嘿,@Niklas,那是为我解决问题的方法:使用带有附加代码的额外异步src标记。 - brianfit
4个回答

阿里云服务器只需要99元/年,新老用户同享,点击查看详情
28

简述:

是的,您可以通过为每个相应的Google帐户+属性ID调用gtag('config',...)来多次添加相同类型的产品。

详细信息:

现在是2021年,我有同样的问题,但太过担心信任此线程中的最高票答案,因为它描述了与我自己测试如何工作的不同经验。首先,为了在2021年回答OP的问题,我们必须查看Google官方文档中的两个条目,因为没有一个条目完全回答了这个问题,但当它们在一起时,它们可以给我们更多的信心来解决这个问题:

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

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

注:

  • 请注意,片段的googleIds数组包含五个ID。
  • 请注意,在运行片段后,页面会设置五个<script>标签,但片段本身只显式构建和设置了一个标签。
  • 其余的标签将在将它们各自的ID推入dataLayer之后添加,并在初始化第一个脚本(即构造+设置元素)之后添加到页面上。这两个步骤的顺序无关紧要(即您可以先初始化,然后将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;
    }
  }
}


赞同提供文档链接。但我发现楼主的代码比你的片段更直观易懂。无论如何,还是谢谢你。 - DrLightman

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>

这是触发事件的位置

<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>

8

是的,根据文档来看是正确的。但在我后续的代码中并没有生成任何数据,直到我添加了

<script async src="https://www.googletagmanager.com/gtag/js?id=ANOTHER_CODE"></script>

在代码块上方。我可能偶然发现了一个可行的技巧,或者是谷歌需要更新他们的文档。


2
看起来每个跟踪 ID 您想要接收页面查看事件,您都需要一个单独的 script 元素,并将 id 设置为您想要接收页面查看事件的跟踪 ID。有时您需要这样做,有时不需要 - 这取决于用例。 - dossy
脚本已添加,但没有数据传送到Google Analytics。我在Chrome控制台上使用Google Analytics调试工具扩展程序时收到了“发送事件“page_view”到未定义”的消息。 - Jack Liu Shurui

2

2
此文档是为了添加其他产品,即 Google 广告,而不是另一个分析跟踪 ID。 - Michele Pisani

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,