ユーザビリティ調査を実施しています。お時間あればご協力お願いします。

【2022年版】Googleアナリティクス4(GA4)でIPアドレスを取得して表示する方法

2021年12月17日

疑問

Googleアナリティクス4(GA4)でIPアドレスを取得して表示するにはどうすればいい?

以下から、Googleアナリティクス4(GA4)でIPアドレスを取得して表示するための方法を紹介します。

Googleアナリティクス4(GA4)でIPアドレスを取得して表示する方法

GA4でIPアドレスを取得して表示させるための手順は下記のようになります。

  • GA4でカスタムディメンションを作成する
  • IPアドレスを取得する
  • GA4のトラッキングコードを修正する

GA4でカスタムディメンションを作成する方法から順番に説明していきます。

GA4でカスタムディメンションを作成

GA4のカスタムディメンションに「IPアドレス」を追加する場合は下記の手順で行います。

GA4のメニューから「設定」>「カスタム定義」を選択して、「カスタムディメンションを作成」をクリックします。

Googleアナリティクス4のカスタムディメンション作成

カスタムディメンション作成画面が表示されるので、項目を入力して保存します。

IPアドレス用のカスタムディメンション作成

  • 【ディメンション名】任意の分かりやすい名称(例:IPアドレス)
  • 【範囲】イベント
  • 【説明】dimension1(ディメンションを作成した番号※任意の説明文なくてもOK)
  • 【イベントパラメータ】分かりやすい変数名(例:ip_address)

範囲(スコープ)は、「イベント」を選択します(ユーザーではうまく取得できませんでした)。

Googleアナリティクス4のカスタムディメンション作成画面

説明には、ディメンションを作成した順番を付けておきましょう。

後からトランキングコードに追加する時にどのディメンションを指定すればよいか分かりやすくなります。ディメンションは作成順にdimension1、2、3と連番が振られるようです。今まで一つも作成したことがないのであれば、それがdimension1になります。

カスタムディメンションの説明にはディメンションの作成順番を書いておくと便利

アクセス日時も同じように作成しておくと後から解析する時に便利です。

アクセス日時用のカスタムディメンション作成

  • 【ディメンション名】任意の分かりやすい名称(例:アクセス日時)
  • 【範囲】イベント
  • 【説明】dimension2(ディメンションを作成した番号※任意の説明文なくてもOK)
  • 【イベントパラメータ】分かりやすい変数名(例:access_time)

IPアドレスを取得する

IPアドレスは、PHPで取得しJavascriptの変数としてGoogleアナリティクス4(GA4)に渡します。

PHPでIPアドレスを取得して、Javascriptの変数として出力する方法は下記のようになります。

IPアドレスを取得するコード

<?php
/*
** Javascriptとして実行して下記のデータを取得する
** ・IPアドレス
** ・日付
*/

$ipaddress  = $_SERVER["REMOTE_ADDR"];
$accesstime = date("Y/m/d H:i:s");

?>

getIPAddress = function() {
  return '<?php echo $ipaddress; ?>';
}

getAccessTime = function() {
  return '<?php echo $accesstime; ?>';
}

上記のコードをPHPファイル(ganalytics.php)として保存して、javascriptとして起動します。

起動方法は、下記の「GA4のトラッキングコードを修正」で説明します。

GA4のトラッキングコードを修正

WordPressであれば、Googleアナリティクス(GA4)のトラッキングコードは、header.phpファイルを修正すれば、全てのページに修正を反映できます。

トラッキングコードは下記のように修正します。

<!-- GET IPAddress Accesstime -->
<script type="text/javascript" src="ganalytics.php?v=1"></script>

<!-- Global site tag (gtag.js) - Google Analytics -->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-XXXXXXXXXX"></script>
<script>
  window.dataLayer = window.dataLayer || [];
  function gtag(){dataLayer.push(arguments);}
  gtag('js', new Date());

  gtag('config', 'G-XXXXXXXXXX', 
  {
    'custom_map': {
    'dimension1': 'ip_address',
    'dimension2': 'access_time',
    },
    'ip_address': getIPAddress(),
    'access_time': getAccessTime(),
  });
</script>

※G-XXXXXXXXXX部分は、自分のGoogleアナリティクス4(GA4)のIDに変えてください。

IPアドレスを取得するPHPファイルをJavascriptとして起動

IPアドレスを取得するためのPHPファイルはGA4のトラッキングコードの前に書きます。

typeをjavascriptにすることで処理はPHPですが、javascriptとして起動できます。

<script type="text/javascript" src="ganalytics.php?v=1"></script>

srcの場所はデータを取得できる場所に配置する必要があります。

例えば、WordPressで子テーマを使って運用しているサイトであれば、下記のように設定することでどこからアクセスしても表示できます。

https://ドメイン名/wp-content/themes/子テーマフォルダ/js/ganalytics.php?version=1

そして、gtagのdimensionXの「X」部分には、カスタムディメンションで作成したインデックス番号を入れて下記のようなコードになります。

メモ

dimension1やdimension2の番号は、カスタムディメンションを作成した順番で連番になっています。メモしていないとどれがどれか分からなくなってしまうので、ディメンション作成時に説明に記載しておきましょう。

  gtag('config', 'G-XXXXXXXXXX', 
  {
    'custom_map': {
    'dimension1': 'ip_address',
    'dimension2': 'access_time',
    },
    'ip_address': getIPAddress(),
    'access_time': getAccessTime(),
  });

これでトラッキングコードの修正は完了です。

IPアドレスの取得を確認する方法

GA4でIPアドレスを取得できたか確認する方法を紹介します。

GA4を開いて、「探索」>「空白」をクリックして、新しいデータ探索を作成します。

【GoogleAnalytics4(GA4)でIPアドレスを確認する方法】GA4で探索を選択して、空白をクリックする。

ディメンションの横にある「+」ボタンをクリックして、「カスタム」から作成した「IPアドレス」と「アクセス日時」にチェックを入れて「インポート」します。

【GoogleAnalytics4(GA4)でIPアドレスを確認する方法】ディメンションから「カスタム」を選んで、IPアドレスとアクセス日時をチェックしてインポートする

指標の横にある「+」ボタンをクリックして、「ユーザー」から「利用ユーザー」にチェックを入れて「インポート」します。

【GoogleAnalytics4(GA4)でIPアドレスを確認する方法】指標から「ユーザー」を選んで、利用ユーザーをチェックしてインポートする

ディメンションに表示されている「IPアドレス」と「アクセス日時」をドラッグして「行」にドロップします。

【GoogleAnalytics4(GA4)でIPアドレスを確認する方法】IPアドレスとアクセス日時を列にドラッグする

同じように指標に表示されている「利用ユーザー」をドラッグして「値」にドロップします。

【GoogleAnalytics4(GA4)でIPアドレスを確認する方法】利用ユーザーを値にドラッグする

両方をドロップすると、IPアドレスと日付が表示されます。

データの表示数は、「行」の「表示する行数」で最大500まで表示できます。それ以上知りたい場合は、CSVなどでダウンロードします。

【GoogleAnalytics4(GA4)でIPアドレスを確認する方法】IPアドレスが表示される

GA4では集計方法(モバイルやPCのアクセスを一つとみなしたりできる)が変わっているため、数値に関しては、うまく合わないことがあります。

(not set)が表示される

上記のデータ表示では、最初の行に(not set)が表示されてしまいます。

試しに特定の日で指標を比較してみた結果、下記のようになりました。

指標
(not set)のセッション数 390
(not set)の利用ユーザー数 345
(not set)の閲覧開始数 374
ユーザー数(レポートのスナップショット) 345
新しいユーザー数(レポートのスナップショット) 316
IPアドレスが取得できた数(重複を省く) 354
IPアドレスが取得できた数(重複あり) 420

「(not set)の利用ユーザー数」と「ユーザー数(レポートのスナップショット)」が一致しているので、なぜかユーザー数が(not set)として表示されているようです(バグ?)。

その他の値を見てみると「利用ユーザー数」と「IPアドレスが取得できた数」はそれほど違わないため、IPアドレスが全く取得できていないというわけではなさそうです。

ただし、数値に差があるので取得できなかったIPアドレスも少なからずありそうなのが分かります。

誤差に関しては、下記のものが原因として考えられますが詳細は不明です。

  • $_SERVER['REMOTE_ADDR']で取得できていない
  • 変数に値が代入される前にGA4のJS処理が走っている
  • その他

とりあえず、そこまで正確なデータが必要なければ、GA4のIPアドレス取得もこの方法でよさそうです。

【まとめ】GA4でIPアドレスを取得して表示する方法

IPアドレスを取得するまでの作業はUA(ユニバーサルアナリティクス)と同じ作業です。

  • Googleアナリティクスでカスタムディメンションを作成する
  • IPアドレスを取得する
  • Googleアナリティクスのトラッキングコードを修正する

取得したIPアドレスの見かたは、探索を使う必要があります。

GA4自体が完成形ではないので、上記の方法で取得できなくなる可能性もあります。

-Googleアナリティクス
-,