Google Analytics フィルタと Google Tag Manager 設定
この記事は
同じ設定を Google Analytics (GA) と Google Tag Manager (GTM) で作らなくてはいけなかった時のメモです。
URL末尾の / 有無を有りに統一する
GA で計測された URL に / 有無でブレが出て、同じページが複数行になってしまったので、 / 有り URL に統一します。
元URL | 元PV |
---|---|
https://example.com/login/ | 3 |
https://example.com/login | 2 |
▼▼▼
フィルタ適用後URL | フィルタ適用後PV |
---|---|
https://example.com/login/ | 5 |
GA
UniversalAnalytics GA での設定です。
以下のフィルタを作成して設定します。
- フィルタの種類 : カスタム、検索して置換
- フィルタフィールド : リクエストURI
- 検索文字列 :
^(?!.*\.html)(?!.*\/$)(?!.*\/\?)(.*\/)(.*?)($|\?.*)
- 文字列の置換 :
\1\2/\3
簡単な解説
-
.html
がURL中にある場合は処理しない - 元から / で終わっているものは処理しない
- / でない文字で終わっていたら文字列の置換により、/ を追加する
- \1 : URL 中の最後の / まで
- \2 : / から ? まで
- \3 : ? 以降
変換例
URL は以下のよう変換されます。
GTM
同じ処理を GTM で行う場合です。
GTM は GA4 に向けて設定しています。
変数を3つ作成し、最終的に PV 計測のタグに埋め込みます。
変数
① プロトコル (http, https が入ります)
項目 | 設定値 |
---|---|
変数のタイプ | URL |
要素タイプ | プロトコル |
② Queryパラメータ
項目 | 設定値 |
---|---|
変数のタイプ | カスタム JavaScript |
function() {
return {{Page URL}}.indexOf('?') !== -1
? '?' + {{Page URL}}.split('?')[1]
: '';
}
③ 正規化URL
項目 | 設定値 |
---|---|
変数のタイプ | カスタム JavaScript |
function() {
var canonicalPath = {{Page Path}}.endsWith('.html') || {{Page Path}}.endsWith('/')
? {{Page Path}}
: {{Page Path}} + '/';
return {{プロトコル}} + '://' + {{Page Hostname}} + canonicalPath + {{Queryパラメータ}};
}
タグ
GA4 用の設定で、設定フィールドに作った変数を埋め込みます。
項目 | 設定値 |
---|---|
タグの種類 | Google アナリティクス:GA4設定 |
測定ID | 計測したい GA4 の ID |
設定フィールド:フィールド名 | page_location |
設定フィールド:値 | {{正規化URL}} |
特定のクエリパラメータをカスタムディメンションに入れる
src というクエリパラメータをサイト内検索の計測に使用することにしたので、これを計測 URL から除外してカスタムディメンションに入れます。
今回は GA フィルタのみで UniversalAnalytics の設定です。
(GA4 はデフォルトでクエリ有無 URL が見られるので設定しませんでした)
GA
格納先のカスタムディメンションを作成します。
プロパティの設定 > カスタム定義 > カスタムディメンション
① 01_サイト内遷移(ヒット)
ヒット単位でのディメンションです。
セッションも作成しましたがここでは割愛します。
- 範囲 : ヒット
- アクティブ : チェック
作るフィルタは3つです。
フィルタの順序によって挙動が変わってしまうので必ず記載の順序で処理されるようにします。
① srcクエリを「サイト内遷移(ヒット)」に格納
- フィルタの種類 : カスタム、詳細
- フィールドA -> 引用A : リクエストURI
.*(\?|&)src=([^&]*).*
- フィールドB -> 引用B : (空欄)
- 出力先 -> 構成 : 01_サイト内遷移(ヒット)
$A2
- フィールドAは必須:チェック
② srcクエリを削除
- フィルタの種類 : カスタム、検索して置換
- フィルタフィールド : リクエストURI
- 検索文字列 :
(^[^?]*\?(.*&)?)(src(=[^&]*)?&?)
- 文字列の置換 :
\1
③ URL末尾の?, &削除
- フィルタの種類 : カスタム、検索して置換
- フィルタフィールド : リクエストURI
- 検索文字列 :
([\?&]$)
- 文字列の置換 : (空欄)
簡単な解説
① クエリの値をカスタムディメンションに入れる
② クエリの中のsrc=****
の部分を消す
③ ②のフィルタの後、?
, &
記号が残ってしまうことがあるので削除
省略したセッション用カスタムディメンションへの格納が 6 に入っていますが、作ったフィルタを順番通りに適用して完了です。
Discussion