web-dev-qa-db-ja.com

Google Analytics-1ページに複数のトラッカー(Cookieの競合)

私は他の人のWebサイト(ウィジェットのようなもの)に埋め込まれるはずのWebアプリケーションを書いています。 Google Analyticsを使用して、埋め込みWebサイトでスクリプトのすべてのインスタンスにアクセスするすべてのユーザーを追跡しています。問題は、それらのWebサイトの独自のGoogleアナリティクスアカウントに干渉しないように、使用方法がわからないことです。私はトラッカー変数を名前空間に保存しているので、それを行うべきだと考えましたが、GAはその設定をクッキー(__utma、__ utmzなど)に保存します。これらのCookieは、同じページに2つのトラッカーがある場合、両方のトラッカーで使用されます。たとえば、_setVarを使用して何らかの種類のユーザー定義変数をGoogleアナリティクスに保存し、埋め込みサイトが同じ場合、互いの値を上書き...

もちろん、GoogleがCookieの名前をカスタムの名前に変更する方法を提供していた方が簡単でしょうが、それを行う方法が見つかりません。 Cookieドメインまたはパスを使用して個別のCookieを強制することを考えましたが、実際のドメイン/パス以外にドメインまたはパスを設定すると、リロード後にページのCookieが読み取れないため、これは機能しません..

1つのページに2つのトラッカーを配置し、それぞれの設定を上書きしないように別々のCookieを使用する方法を知っている人はいますか?

または、それが完全に不可能な場合、GAでこれが可能な機能と同じような他の分析サービスはありますか?(イベントやキャンペーンの追跡などの高度な機能が必要です...)

55
Kuba Suder

新しい非同期トラッキングコードで簡単になりました。 :)

https://developers.google.com/analytics/devguides/collection/gajs/#MultipleCommands

56
Paul Thompson

Googleアナリティクストラッキングコードの複数のインスタンスをウェブページにインストールして、アカウントの複数のプロパティにデータを送信できます。 https://support.google.com/analytics/answer/1032400?hl=en

または、クリエイティブを取得して、Googleの指示に従って次の操作を実行できます。 https://developers.google.com/analytics/devguides/collection/analyticsjs/advanced#multipletrackers

<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','ga');

  ga('create', 'UA-XXXX-Y', 'auto');
  ga('create', 'UA-XXXX-Y', 'auto', {'name': 'newTracker'});
  ga('send', 'pageview');
  ga('newTracker.send', 'pageview');

</script>
18
MyWebsiteSpot

Googleアナリティクスは同じページ上の複数のトラッカーで問題なく機能するため、異なるCookie名を使用する必要はありません。質問の回答をご覧くださいGoogle Analytics-複数のアカウントの複数のトラッカー?

更新

複数のトラッカーは有効な方法ですが、いくつかの落とし穴があります を使用することがわかります。それらの1つ、つまり、それぞれに異なるユーザーセグメンテーションを適用することはできません。 John Hensonは、 強制GA別のCookieを使用する 、それを確認する必要があるかもしれないという回避策を示しています。

10
Török Gábor

誰かがまだこの問題を抱えており、簡単に貼り付けたい場合、私の問題は、Googleトラッキングを使用している可能性のある他の人のページに追加されたコードに対して、独自のGoogleトラッキングを使用していました。私はこれをテストし、期待通りに機能することを確認しました:

var _gaq = _gaq || [];

_gaq.Push(['some_unique_name._setAccount', 'UA-xxxxxxxx-1']);
_gaq.Push(['some_unique_name._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);
})();

私もイベントを使用しています

_gaq.Push(['some_unique_name._trackEvent', 'Event Category', 'Event Action', 'Event Label']);

誰かが問題を見つけたら、私に知らせてください。

8
Miles Lukas

Googleはこのプラクティスに反対することを推奨しているようです。

1つのWebページにGoogle Analyticsトラッキングコードの複数のインスタンスをインストールすることはサポートされていません。 1つのインスタンスを除くすべてを削除し、追跡するすべてのページに正しいプロファイルのコードがインストールされていることを確認することをお勧めします。

https://support.google.com/analytics/bin/answer.py?hl=en-GB&answer=10324

3
Vince

Törökがリストした documentation によると、正しい答えは _ setCookiePath を使用することです。これにより、各トラッカーは完全に異なるCookieを使用します。

ウェブサイトのサンプルコード:

<script type=”text/javascript”>
    var pageTracker = _gat._getTracker(”UA-11111-1″);

    pageTracker._setDomainName(’domain.com’);

    pageTracker._setCookiePath(’/subdirectory/’);
    pageTracker._trackPageview();

    var otherTracker = _gat._getTracker(”UA-22222-1″);
    otherTracker._setDomainName(’domain.com’);
    otherTracker._trackPageview();
</script>

あるドメインから別のドメインにリンクする場合、他のドメインに投稿するすべてのリンクは次のようになります。

<a href="pageTracker._linkByPost('otherdomain.com/petStoreCart/legalTerms.php');"

これにより、上記のスクリプトがCookieを設定するために使用するGoogleアナリティクス固有のクエリ文字列値が追加されます( source )。

3

私は私たちのサイトとクライアントサイトでこの構造を使用しました、そしてそれは魅力のように働きます...

<script type="text/javascript"> 
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");    
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js'     type='text/javascript'%3E%3C/script%3E")); 
</script> <script type="text/javascript"> 

try {

//Original tracking
var pageTracker_ORIG = _gat._getTracker("UA-XXXXXXX-1");
pageTracker_ORIG._setDomainName('.sleepinggiantmedia.co.uk');
pageTracker_ORIG._trackPageview();

//New Analytics tag
var pageTracker_SGM = _gat._getTracker("UA-XXXXXXX-1");
pageTracker_SGM._setDomainName('.sleepinggiantmedia.co.uk');
pageTracker_SGM._trackPageview();


} catch(err) {}
1