🍄

Google Analytics フィルタと Google Tag Manager 設定

2022/04/29に公開

この記事は

同じ設定を Google Analytics (GA) と Google Tag Manager (GTM) で作らなくてはいけなかった時のメモです。

URL 末尾の / 有無を有りに統一する

GA で計測された URL に / 有無でブレが出て、同じページが複数行になってしまったので、 / 有り URL に統一します。

Before:

元 URL 元 PV
https://example.com/login/ 3
https://example.com/login 2

After:

フィルタ適用後 URL フィルタ適用後 PV
https://example.com/login/ 5

GA

UniversalAnalytics GA での設定です。
以下のフィルタを作成して設定します。

  • フィルタの種類 : カスタム、検索して置換
  • フィルタフィールド : リクエスト URI
  • 検索文字列 : ^(?!.*\.html)(?!.*\/$)(?!.*\/\?)(.*\/)(.*?)($|\?.*)
  • 文字列の置換 : \1\2/\3

GA設定画面キャプチャ

簡単な解説

  • .htmlが URL 中にある場合は処理しない
  • 元から / で終わっているものは処理しない
  • / でない文字で終わっていたら文字列の置換により、/ を追加する
  • \1 : URL 中の最後の / まで
  • \2 : / から ? まで
  • \3 : ? 以降

変換例

URL は以下のよう変換されます。

元 URL フィルタ後 URL
https://example.com/login.html https://example.com/login.html
https://example.com/login/ https://example.com/login/
https://example.com/login https://example.com/login/
https://example.com/login?q=v https://example.com/login/?q=v

GTM

同じ処理を GTM で行う場合です。
GTM は GA4 に向けて設定しています。
変数を 3 つ作成し、最終的に PV 計測のタグに埋め込みます。

変数

変数1:プロトコル(http, https が入ります)

項目 設定値
変数のタイプ URL
要素タイプ プロトコル

変数2:Query パラメータ

項目 設定値
変数のタイプ カスタム JavaScript
カスタムJavaScript
function() {
  return {{Page URL}}.indexOf('?') !== -1
    ? '?' + {{Page URL}}.split('?')[1]
    : '';
}

変数3:正規化 URL

項目 設定値
変数のタイプ カスタム JavaScript
カスタム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

カスタムディメンション

格納先のカスタムディメンションを作成します。
プロパティの設定 > カスタム定義 > カスタムディメンション

カスタムディメンション1:01_サイト内遷移(ヒット)

ヒット単位でのディメンションです。
セッションも作成しましたがここでは割愛します。

  • 範囲 : ヒット
  • アクティブ : チェック

フィルタ

作るフィルタは 3 つです。
フィルタの順序によって挙動が変わってしまうので必ず記載の順序で処理されるようにします。

フィルタ1:src クエリを「サイト内遷移(ヒット)」に格納

  • フィルタの種類 : カスタム、詳細
  • フィールド A -> 引用 A : リクエスト URI .*(\?|&)src=([^&]*).*
  • フィールド B -> 引用 B : (空欄)
  • 出力先 -> 構成 : 01_サイト内遷移(ヒット) $A2
  • フィールド A は必須:チェック

フィルタ2:src クエリを削除

  • フィルタの種類 : カスタム、検索して置換
  • フィルタフィールド : リクエスト URI
  • 検索文字列 : (^[^?]*\?(.*&)?)(src(=[^&]*)?&?)
  • 文字列の置換 : \1

フィルタ3:URL 末尾の ?, & 削除

  • フィルタの種類 : カスタム、検索して置換
  • フィルタフィールド : リクエスト URI
  • 検索文字列 : ([\?&]$)
  • 文字列の置換 : (空欄)

簡単な解説

フィルタ1)クエリの値をカスタムディメンションに入れる。
フィルタ2) クエリの中のsrc=**** の部分を消す。
フィルタ3) フィルタ2の後、?, & 記号が残ってしまうことがあるので削除。

省略したセッション用カスタムディメンションへの格納が 6 に入っていますが、作ったフィルタを順番通りに適用して完了です。
GAフィルタ設定画面キャプチャ

Discussion