ga オブジェクトの名前を変更する

場合によっては、analytics.js をページに追加しようとしても、ga 変数がすでに別の場所で使用されていることがあります。このような状況に対応するため、analytics.js には、グローバル ga オブジェクトの名前を変更するメカニズムがあります。

トラッキング スニペットのグローバル オブジェクトの名前を変更する

JavaScript トラッキング スニペットでは、短縮された関数に渡される最後のパラメータを変更することで、グローバル ga オブジェクトの名前を変更できます。また、コマンドキューのすべての呼び出しも、ga() から新しい名前に変更してください。

たとえば、ga オブジェクトを analytics に変更するには、トラッキング スニペットを次のように変更します。

<!-- Google Analytics -->
<script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','analytics');

analytics('create', 'UA-XXXXX-Y', 'auto');
analytics('send', 'pageview');
</script>
<!-- End Google Analytics -->

手動でグローバル オブジェクトの名前を変更する

グローバル オブジェクトの名前の変更は、読み込み時に analytics.js がグローバル変数の GoogleAnalyticsObject に保存された文字列を取得することで実現します。この変数が見つかると、文字列がグローバル コマンドキューの新しい名前として使用されます。

トラッキング スニペットを使用せずに analytics.js を読み込む場合でも、グローバル オブジェクトの名前を変更できます。変更するには、analytics.js ライブラリを読み込む前に変数 GoogleAnalyticsObject に使用する名前を設定します。

たとえば、jQuery の $.getScript メソッドを使用して analytics.js を読み込む場合は、次のコードでグローバル オブジェクトの名前を変更できます。

<script>
// Instructs analytics.js to use the name `analytics`.
window.GoogleAnalyticsObject = 'analytics';

// Uses jQuery to load analytics.js instead of the tracking snippet.
$.getScript('//www.google-analytics.com/analytics.js', function() {

  // Creates a tracker and sends a pageview using the renamed command queue.
  analytics('create', 'UA-12345-1', 'auto');
  analytics('send', 'pageview');
});
</script>

代替の非同期トラッキング スニペット

標準の JavaScript トラッキング スニペットと異なり、デフォルトの代替の非同期トラッキング スニペットでは、グローバル ga オブジェクトの名前を変更できません。

ただし、上記の方法を使用することで、グローバル ga オブジェクトの名前を変更でき、代替の非同期トラッキング スニペットのプリロードのメリットもすべて利用できます。

次のように変更した代替の非同期トラッキング スニペットでは、GoogleAnalyticsObject 変数が analytics に設定され、ga のすべてのインスタンスの名前も analytics に変更されます。

<!-- Google Analytics -->
<script>

// Instructs analytics.js to use the name `analytics`.
window.GoogleAnalyticsObject = 'analytics';

// Creates an initial analytics() function.
// The queued commands will be executed once analytics.js loads.
window.analytics = window.analytics || function() {
  (analytics.q = analytics.q || []).push(arguments)
};

// Sets the time (as an integer) this tag was executed.
// Used for timing hits.
analytics.l = +new Date;

// Creates a default tracker with automatic cookie domain configuration.
analytics('create', 'UA-12345-1', 'auto');

// Sends a pageview hit from the tracker just created.
analytics('send', 'pageview');
</script>

<!-- Sets the `async` attribute to load the script asynchronously. -->
<script async src='//www.google-analytics.com/analytics.js'></script>
<!-- End Google Analytics -->