計測対象のサイトのサーバーでPHPが使えない場合に,Google Analyticsのグローバルサイトタグ(gtag.js)をカスタマイズして「IPアドレス,クライアントID,アクセス時間,ユーザーエージェント」を取得する方法を紹介します.
目次
1.はじめに
「クライアントID,IPアドレス,アクセス時間,ユーザーエージェント」を取得するためにGoogle Analyticsのカスタムディメンションを使います.カスタムディメンション機能を使うには,Google Analyticsはユニバーサルアナリティクス(analytics.js)やグローバルサイトタグ(gtag.js)を使う必要があります.取得する各情報の説明やカスタムディメンションの設定などは,記事「GA(analytics.js版)でIPアドレス・クライアントID等を取得する(PHPファイル使用版)」を参照してください.
この記事で紹介する方法は,外部のサーバーにGoogle Analyticsのデータの一部を送ることになります.したがって,カスタマイズをするサイトの情報が送られるサーバーで収集されているかもしれません.紹介する方法ではとくにそのようなことはやっていないようにみえますが,正確なことはわかりません.当サイトではなにかあっても責任は負えませんので,自己責任で行ってください.計測対象のサイトのサーバーでPHPが使える環境の場合は,記事「GA(gtag.js版)でIPアドレス・クライアントID等を取得する(PHPファイル使用版)」で紹介しています.
なお,IPアドレスの取得を諦めるならば,それ以外(クライアントID,アクセス時間,ユーザーエージェント)はJavaScriptを使って所得することができます.その方法は,記事「GA(gtag.js版)でクライアントID・アクセス時間等を取得する(JavaScriptのみ版)」にて紹介しています.
注意(2021年5月追加):本サイトの記事の多くで書かれているグローバルサイトタグ「gtag.js」のGoogle Analytics(例えば,「GA(gtag.js版)」など)とは,トラッキングコードがgtag.jsで計測環境はユニバーサルアナリティクスであることに注意してください(Google Analytics 4に関係する内容では,「Google Analytics 4」や「GA4」と書きます).詳しくは記事「Google Analyticsで取得したIPアドレスのデータを見てみる」の最後の「analytics.jsとgtag.jsのGoogle Analyticsに関する補足説明」の節を参照してください.
2.外部サーバーを使う方法
この方法は
けいの開発記録
Google AnalyticsでIPアドレスを表示できるタグ「analyticsIP」を公開
にて紹介されているカスタマイズをグローバルサイトタグに対応させたものとなります.上記サイトにアクセスしてもらえばわかりますが,だいぶ昔からある方法で現在(この記事の投稿時)も稼働しています.それでは,カスタマイズしたグローバルサイトタグ(gtag.js)のGoogle Analyticsのトラッキングコードを下記に示します.
<script type="text/javascript" src="//www.analyticsip.net/getIP/public_html/ra/script.php"></script><noscript><p><img src="//www.analyticsip.net/getIP/public_html/ra/track.php" alt="" width="1" height="1" /></p></noscript>
<!-- Global site tag (gtag.js) - Google Analytics -->
<script async src="https://www.googletagmanager.com/gtag/js?id=UA-12345678-X"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'UA-12345678-X', {
'custom_map': {
'dimension1': 'clientId',
'dimension2': 'access_time',
'dimension3': 'ua',
'dimension4': 'ip_value'
},
'access_time': trackCommonMethod.getAccessTime(),
'ip_value': trackCommonMethod.getIP(),
'ua': navigator.userAgent
});
</script>
コードを簡単に説明しておきます.まずカスタマイズした箇所が赤色のフォントです(トラッキングIDは「UA-12345678-X」としています).
<script type="text/javascript" src="//www.analyticsip.net/getIP/public_html/ra/script.php"></script><noscript><p><img src="//www.analyticsip.net/getIP/public_html/ra/track.php" alt="" width="1" height="1" /></p></noscript>
は必ずGoogle Analyticsのトラッキングコードの直上に記載してください.このコードで外部のサーバーと連絡を取ります.
上記のカスタマイズしたコードにおいて,各カスタムディメンションと「IPアドレス,クライアントID,アクセス時間,ユーザーエージェント」の対応関係は以下のようになっています.
- Google Analyticsのカスタムディメンションのインデックス「1」に「クライアントID」を送信.
- Google Analyticsのカスタムディメンションのインデックス「2」に「アクセス時間」を送信.
- Google Analyticsのカスタムディメンションのインデックス「3」に「ユーザーエージェント」を送信.
- Google Analyticsのカスタムディメンションのインデックス「4」に「IPアドレス」を送信.
アクセス時間とIPアドレスは,「けい開発記録」さんの外部サーバーを使ってIPアドレスを取得しています.「アクセス時間」は,記事「GA(gtag.js版)でクライアントID・アクセス時間等を取得する(JavaScriptのみ版)」にて紹介しているような方法でも取得できるので,外部サーバーを使わない設定も可能です.
3.データ管理と利用
記事「マーケティングツールを利用規約や情報の取り扱いの重要性を理解して使用する」で書いたように取得した情報の取り扱いにも注意を払うことを忘れないようにしましょう.
IPアドレスを取得するカスタマイズを紹介していてなんですが,昨今のネットに関連する個人情報保護の動きで,取得したIPアドレスなどの情報を厳格に管理する必要が生じる場合があります.日本の現状ではIPアドレスの情報はそのような対象になっていませんが,例えばEU諸国ではGDPR(EU一般データ保護規則)によってEU諸国内の全ての個人のプライバシー保護をする必要があり,それはEUからアクセスできるサイトにも適用されます(GDPRはIPアドレスだけでなくCookieも対象なのでクライアントIDも関係します).詳しい情報は,他のサイトにお任せしますがカスタマイズによって取得したデータ管理も気をつけるべきでしょう.
なお,Google AnalyticsでもデフォルトでIPアドレスを取得していると述べましたが,Googleはそのデータを匿名化するための情報を提示しています.
アナリティクスでの IP 匿名化(IP マスキング)
アナリティクスでの IP アドレスの匿名化の方法に関する技術的な説明
取得したIPアドレスに関して,本サイトでは記事「IPアドレスの情報を利用してビジネスチャンスを広げる – 無料で出来そうなこととは?-」で利用方法なども考えていますが,カスタマイズやその取得したデータの取り扱いは自己責任でお願いします.
4.おわりに
外部サーバーを使うグローバルサイトタグ(gtag.js)のカスタマイズの記事は,本サイトのその他の記事analytics.js版の場合やその他のgtag.js版のカスタマイズの記事)を参考にしてもらえば応用してできるだろうと思っていました.ですが,グローバルサイトタグ(gtag.js)を使っているのに,外部サーバーでIPアドレスを取得するためのカスタムディメンションのためだけにanalytics.jsのコードを併記するようなカスタマイズをしている方を見かけたのでこの記事を作ってみました.
同様のGoogle Analyticsのカスタマイズ関係はカテゴリー「GAのカスタマイズ」にあります.また,カテゴリー「GAの基礎・設定」でも記事「Google Analytics(analytics.js版)でのファイルダウンロードを計測するための設定」や「IPアドレスなしで関係者のアクセスをGoogle Analyticsのデータから除外する方法(問題点等も紹介)」などのような基礎的なカスタマイズの話もあります.