【问题标题】:Firing a tag on certain pages in Google Tag Manager在 Google 跟踪代码管理器中的某些页面上触发代码
【发布时间】:2013-12-06 14:39:28
【问题描述】:

我正在尝试创建一个正则表达式以在某些页面上的 Google 跟踪代码管理器中触发一个代码。

我遇到的问题是我不想在与其中的查询字符串匹配的 URL 上触发此标记,因为它只是一个会话标识符,我不需要在具有查询字符串的页面上触发该标记.这些基本上是重复的,不需要在第 3 方跟踪程序中进行跟踪。我知道如何在 GA 中排除它们,但我不知道如何为第三方跟踪做到这一点。

我将详细说明下面的场景以及我尝试过的方法。

如果我在 GA 中查看,我的 URL 报告中出现的示例页面:

/页面

/page/subpage?my-handsome-query-string&some-other-data

/页面/子页面

/页面/子页面/子子页面

/page/?query-string-again

所以我想做的是在没有查询字符串的页面上触发跟踪,这证明了这个问题。

如果我输入^/page.*[^\?],它就不起作用。我想我完全错误地使用了否定字符类?我无法让它工作,需要一些帮助来设计更好的正则表达式。

我尝试过的其他一些是:

^/page/.* 但这个只匹配/page/ 之后的所有内容,而不是/page

我不太擅长正则表达式,所以我基本上想做的是匹配/page, /page/subpage, /page/subpage/subpage等,但不是任何包含查询字符串的URL。

在 GTM 中,我无法创建两个写为 "Include {{url path}} matching this" and "Exclude {{url path}} matching \?" 的规则,所以这一切都需要在一个正则表达式中完成......这完全让我不知所措。

编辑:Mike 给出了一个很好的答案来解决我的 GTM 部分,但我仍然有兴趣了解是否可以使用单个正则表达式完成上述操作?

【问题讨论】:

    标签: regex google-analytics google-tag-manager


    【解决方案1】:

    您实际上可以按照您的描述创建两个规则。

    在 GTM 中,标签可以同时具有触发规则和阻止规则。阻塞优先。例如。

    触发规则:

    {{url}} matches ^page/.*
    

    屏蔽规则:

    {{url}} does not contain ?
    

    另一种选择是使用自定义 javascript 宏。 它采用function(){ } 的形式,可以检测window.location.search 中的查询字符串值并返回布尔值。然后有一个触发规则{{your custom fn}} equals 1

    您还可以创建一个使用URL 宏类型和Query 组件类型的宏。 该值设置为不带前导 ? 的查询字符串。如果 url 是 example.com?foo=bar,则此宏将包含 foo=bar。然后只需添加触发规则{{query}} matches Regex ^${{query}} does not contain something-that-will-never-be-in-the-url-to-avoid-regex

    【讨论】:

    • 感谢您的回答,迈克。这确实解决了我的 GTM 问题。如果有人对我的正则表达式问题有一些意见,那就太好了,因为我仍然想知道是否可以用一个正则表达式完成上述操作。
    • 听起来你正在使用的正则表达式是^\/page[^\?]*?$
    • 这意味着网址以 (^) /pages 开头,后跟任何不是“?”的内容零次或多次 (*?) 直到字符串结尾 ($)
    • 谢谢。我会给他们一个漩涡!
    • 当您可以创建 2 个简单规则时,为什么还要使用复杂的正则表达式?答案中的解决方案更优雅。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-08-01
    • 2022-07-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多