ga.js は、ユーザーがウェブサイトで行っている操作を測定するための JavaScript ライブラリです。これは以前のライブラリです。Google アナリティクスを初めて利用される場合は、最新のトラッキング ライブラリ analytics.js を使用してください。
トラッキング コード クイックスタート
アナリティクス スニペットは、ページに貼り付ける小さな JavaScript コードです。ページに ga.js
を挿入し、Google アナリティクス トラッキングを有効にします。これをページで使用するには、以下のコード スニペットをコピーします。UA-XXXXX-X
は、ウェブ プロパティ ID に置き換えます。このスニペットをウェブサイトのテンプレート ページに貼り付けて、終了タグ </head>
の前に配置します。
基本的なページ トラッキング以外の処理を行う必要がある場合は、トラッキング リファレンスで API で利用できるメソッドのリストをご覧ください。また、非同期構文の使用について詳しくは、使用ガイドをご覧ください。トラッキングの設定手順については、トラッキングの設定に関するヘルプセンター記事をご覧ください。
<script type="text/javascript"> var _gaq = _gaq || []; _gaq.push(['_setAccount', 'UA-XXXXX-X']); _gaq.push(['_trackPageview']); (function() { var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true; ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js'; var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s); })(); </script>
上記のスニペットは、ページを非同期でトラッキングするために必要な最小構成を表しています。_setAccount
を使用してページのウェブ プロパティ ID を設定し、_trackPageview
を呼び出してトラッキング データを Google アナリティクス サーバーに送信します。
重要: ページを従来のスニペットから最新の非同期バージョンに更新する場合は、まず既存のトラッキング スニペットを削除する必要があります。両方のスニペットを同じページで一緒に使用することはおすすめしません。移行手順については、非同期への移行をご覧ください。
非同期構文の仕組み
_gaq
オブジェクトにより、非同期構文が可能になります。キューは、ga.js
を実行する準備が整うまで API 呼び出しを収集する、先入れ先出しのデータ構造です。キューに何かを追加するには、_gaq.push
メソッドを使用します。
API 呼び出しをキューに push するには、従来の JavaScript 構文からコマンド配列に変換する必要があります。コマンド配列は、特定の形式に準拠する単なる JavaScript 配列です。コマンド配列の最初の要素は、呼び出すトラッカー オブジェクト メソッドの名前です。文字列で指定する必要があります。残りの要素は、トラッカー オブジェクト メソッドに渡す引数です。任意の JavaScript 値を指定できます。
次のコードは、従来の構文を使用して _trackPageview()
を呼び出します。
var pageTracker = _gat._getTracker('UA-XXXXX-X'); pageTracker._trackPageview();
非同期構文の同等のコードでは、_gaq.push
を 2 回呼び出す必要があります。
_gaq.push(['_setAccount', 'UA-XXXXX-X']); _gaq.push(['_trackPageview']);
非同期構文では、トラッカー オブジェクトを作成することは暗示的ですが、トラッカーのウェブ プロパティ ID を設定する方法も必要です。この機能を実現するため、_setAccount
メソッドが追加されました。他のすべてのトラッカー オブジェクト メソッドは、非同期トラッキングと従来のトラッキングの両方で同じです。構文のみが異なります。
非同期構文の詳細については、_gaq.push
メソッドのトラッキング リファレンスをご覧ください。
HTML イベント ハンドラによるトラッキング
非同期トラッキング構文も DOM イベント ハンドラ内から使用するようにしてください。たとえば、次のボタンをクリックすると、イベントが生成されます。
<button onclick="_gaq.push(['_trackEvent', 'button3', 'clicked'])"></button>
ブラウザで ga.js
の読み込みが完了する前にこのボタンがクリックされた場合でも、イベントがキャプチャされて最終的に実行されます。従来のトラッキングを使用すると、この状況で例外がスローされることがあります。
関数をキューに push
コマンド配列に加えて、関数オブジェクトを _gaq
キューに push することもできます。関数には任意の JavaScript を含めることができ、コマンド配列と同様に、_gaq
に push された順序で実行されます。この手法は、値を返すトラッキング API を呼び出す場合に便利です。たとえば、次のコードはリンカーの URL を作成し、結果を含むリンクの href
プロパティを設定します。
_gaq.push(function() { var pageTracker = _gat._getTracker('UA-XXXXX-X'); var link = document.getElementById('my-link-id'); link.href = pageTracker._getLinkerUrl('http://example.com/'); });
上記の例では、_gat
を使用してトラッカー オブジェクトを作成していますが、これはローカル変数に代入されているため、関数の外部のコードでは使用できません。これは許容できますが、_gat._createTracker
メソッドを使用して、グローバルにアクセス可能な永続的オブジェクトを作成できます。次のコードは、その仕組みを示しています。
_gaq.push(function() { var pageTracker = _gat._createTracker('UA-XXXXX-X', 'myTracker'); var link = document.getElementById('my-link-id'); link.href = pageTracker._getLinkerUrl('http://example.com/'); }); _gaq.push(['myTracker._trackPageview']);
上記の例では、関数内に非同期トラッカーを作成し、その後、コマンド配列で名前を使用して参照します。
その逆のユースケースも可能です。たとえば、以前にプッシュされたコマンド配列を介して作成された非同期トラッカー オブジェクトを使用する必要がある場合は、_gat._getTrackerByName
メソッドを使用します。次のコードは、その仕組みを示しています。
_gaq.push(['myTracker._setAccount', 'UA-XXXXX-X']); _gaq.push(function() { var pageTracker = _gat._getTrackerByName('myTracker'); var link = document.getElementById('my-link-id'); link.href = pageTracker._getLinkerUrl('http://example.com/'); });
1 回のプッシュで複数のコマンド
呼び出しごとに _gaq.push(...)
を入力する代わりに、すべてのコマンドを一度にプッシュできます。次のコードは、この手法を示しています。
_gaq.push( ['_setAccount', 'UA-XXXXX-X'], ['_setDomainName', 'example.com'], ['_setCustomVar', 1, 'Section', 'Life & Style', 3], ['_trackPageview'] );
これは、_gaq.push
メソッドは Array.push
メソッドを模倣しているため、1 回の呼び出しで複数のアイテムを push できます。
スニペットの分割
アナリティクスのスニペットをページの一番下に配置する場合、スニペット全体を下に置く必要はありません。
スニペットを半分に分割して、前半をページ上部、残りを一番下に移動することで、非同期読み込みのメリットのほとんどを受けられます。トラッキング スニペットの最初の部分はページ レンダリングにほとんど影響しないため、上部に残して、ga.js
を挿入するスニペット部分を下部に配置できます。
非同期スニペットが半分に分割されたページは、次のようになります。
<html> <head> <script type="text/javascript"> var _gaq = _gaq || []; _gaq.push(['_setAccount', 'UA-XXXXX-X']); _gaq.push(['_trackPageview']); </script> </head> <body> <p>Page Content</p> <script src="some_random_script.js"></script> <p>Page Content</p> <script type="text/javascript"> (function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
</script> </body> </html>
両方のコードを独自のスクリプトタグでラップする必要がありますが、元の非同期スニペットの最後の 6 行のみを一番下に移動する必要があります。メソッドを _gaq
に push するすべての行が一番上に表示されます。
よくある問題の回避方法
非同期構文または従来の構文を使用する場合は、次の点に注意してください。
- メソッド名では大文字と小文字が区別されます。
大文字と小文字を適切に区別せずにメソッド名を使用すると、メソッド呼び出しは機能しません。例:_gaq.push(['_trackpageview']); // bad _gaq.push(['_trackPageview']); // good
- 正しいメソッド名を使用します。
トラッキングが正しく機能しない場合は、メソッド名が正しいことを確認してください。例:_gaq.push(['_setDomain', 'example.com']); // bad _gaq.push(['_setDomainName', 'example.com']); // good
- 文字列だけを引用符で囲んで渡す必要があります。文字列以外の値は引用符で囲まないでください。
ブール値、オブジェクト リテラル、関数、配列など、文字列でない値は引用符で囲まず渡す必要があります。文字列として解釈されるものを渡す場合にのみ、引用符を使用します。従来の構文から移行する場合、引用符なしで渡された関数パラメータは非同期の構文でも引用符で囲まないでください。例:_gaq.push(['_setAllowLinker', 'false']); // bad _gaq.push(['_setAllowLinker', false]); // good
- 文字列の先頭や末尾に空白が含まれていないことを確認します。
例:_gaq.push(['_setAccount', ' UA-65432-1']); // bad _gaq.push(['_setAccount', 'UA-65432-1']); // good
トラッキングの無効化
場合によっては、コード スニペットを削除せずに、ページ上の Google アナリティクス トラッキング コードを無効にする必要があります。たとえば、サイトのプライバシー ポリシーに、ユーザーが Google アナリティクス トラッキングをオプトアウトできる機能が含まれていることがあります。
ga.js
トラッキング スニペットに Window プロパティが追加されました。true
に設定すると、トラッキング スニペットによる Google アナリティクスへのデータ送信が無効になります。
Google アナリティクスは、Cookie の設定または Google アナリティクスのサーバーへのデータの送信を試みる際、このプロパティが true
に設定されているかどうかをチェックします。有効であれば、ビジターは Google アナリティクスのオプトアウト ブラウザ プラグインをインストールしていた場合と同じ結果になります。
トラッキングを無効にするには、次の window プロパティを true に設定します。
window['ga-disable-UA-XXXXXX-Y'] = true;
値 UA-XXXXXX-Y
は、トラッキングを無効にするウェブ プロパティ ID に対応します。
このウィンドウ プロパティは、トラッキング コードを呼び出す前に設定する必要があります。Google アナリティクス トラッキングを無効にする各ページで、このプロパティを設定する必要があります。このプロパティが設定されていない場合、またはプロパティを false に設定した場合、トラッキングは通常どおり動作します。
たとえば、ページの Google アナリティクス トラッキング コードに次のように含まれているとします。
_gaq.push['_setAccount', 'UA-123456-1']
そして、そのトラッキング コードによる Cookie の設定や Google アナリティクスへのデータの送信を無効にする場合は、トラッキング コードを呼び出す前に次のコードを使用します。
window['ga-disable-UA-123456-1'] = true;
複数のウェブ プロパティ ID を持つページで複数のトラッカーを使用している場合、各ウェブ プロパティに同等の window['ga-disable-UA-XXXXXX-Y']
変数を true
に設定して、そのページで Google アナリティクス トラッキングを完全に無効にする必要があります。
例
ここでは、ユーザーにオプトアウト機能を提供するコードの簡単な例を示します。
まず、新しい HTML リンクをサイトに追加し、オプトアウトのロジックを実行します。
<a href="javascript:gaOptout()">Click here to opt-out of Google Analytics</a>
次に、ga.js コード スニペットの前に次のコード スニペットを追加します。gaProperty
の値は、UA-XXXX-Y
から、サイトで使用されているプロパティに必ず置き換えてください。これは、_setAccount
コマンドに渡す値と同じです。
<script> // Set to the same value as the web property used on the site var gaProperty = 'UA-XXXX-Y'; // Disable tracking if the opt-out cookie exists. var disableStr = 'ga-disable-' + gaProperty; if (document.cookie.indexOf(disableStr + '=true') > -1) { window[disableStr] = true; } // Opt-out function function gaOptout() { document.cookie = disableStr + '=true; expires=Thu, 31 Dec 2099 23:59:59 UTC; path=/'; window[disableStr] = true; } </script>
ユーザーがオプトアウト用の HTML リンクをクリックすると、カスタムの gaOptout
関数が実行されます。これにより、今後長期間の Cookie が設定され、analytics.js のデータ収集が無効になります。
ユーザーがこのサイトに戻ると、上記のスクリプトによって、オプトアウト Cookie が設定されているかどうかが確認されます。設定した場合、analytics.js のデータ収集も無効になります。
SSL の使用(HTTPS)
安全でないページ(HTTP)からでも、常に Google アナリティクスを使用して SSL にデータを送信するには、次の例のように _gat._forceSSL
メソッドを使用します。
_gaq.push(['_setAccount', 'UA-12345-1']); _gaq.push(['_gat._forceSSL']); // Send all hits using SSL, even from insecure (HTTP) pages. _gaq.push(['_trackPageview']);