Google Analytics ga('set') 等同于 Google 跟踪代码管理器

Google Analytics ga('set') equivalant on Google Tag Manager

引自https://developers.google.com/analytics/devguides/collection/analyticsjs/single-page-applications

When your application loads content dynamically and updates the URL in the address bar, the data stored on your tracker should be updated as well.

ga('set', 'page', '/new-page.html');

如果我将 Google 跟踪代码管理器与 Google 分析一起使用,我如何 运行 做到这一点?

下面是我如何使用高阶组件跟踪 React 路由器上的路由更改时的网页浏览量的片段

 componentDidMount() {
      const { history } = this.props;
      this.history = history.listen(location => {
        if (history.action === 'PUSH') {
          // location change
          if (window && window.dataLayer) {
            const dataLayer = window.dataLayer || [];
            const { pathname, search } = location;
            // how to achieve this with Google Tag Manager?
            // ga.set('page', `${pathname}${search}`);
            setTimeout(() => {
              dataLayer.push({
                event: 'Pageview',
              });
            }, 1000);
          }
        }
      });
    }

如果您使用的是 GTM,那么我可以推荐两个选项。

选项 1, 如果您的应用在路由更改时实际更新 URL:

  1. 创建一个自定义事件触发器来跟踪您已推送到数据层的 Pageview 事件。

  2. 进入“变量”并确保选择了“页面路径”。

  3. 创建一个新的 GA 标签并确保选中“在此标签中启用覆盖设置”,然后在底部有“更多设置”的下拉菜单,您会看到“用于Set”,点击“Add Field”,可以添加“page”,并将值设置为{{Page Path}}。然后在步骤1中创建的触发器中添加

保存并运行,您应该通过此事件将综合浏览量数据发送到 GA。该路径将是浏览器 url 栏中的任何内容。

如果你想要一个更个性化的路径,那么你可以修改你的代码如下,我们在数据层添加了“page-path”变量。

componentDidMount() {
          const { history } = this.props;
          this.history = history.listen(location => {
            if (history.action === 'PUSH') {
              // location change
              if (window && window.dataLayer) {
                const dataLayer = window.dataLayer || [];
                const { pathname, search } = location;
                // how to achieve this with Google Tag Manager?
                // ga.set('page', `${pathname}${search}`);
                setTimeout(() => {
                  dataLayer.push({
                    page-path: ${pathname}${search},
                    event: 'Pageview'
                  });
                }, 1000);
              }
            }
          });
        }

然后您需要设置一个新的数据层变量以在 GTM 中捕获它:

然后回到之前创建的GA标签,将“page”字段值修改为这个新变量: