1. ホーム
  2. javascript

[解決済み] Google analytics analytics.js 2つのトラッカーがぶつかり合う?

2022-01-30 06:49:30

質問

analytics.jsスクリプトを使用して、3つのサイト(2つの第2レベルドメインと1つのサブドメイン)をトラッキングしています...例:dom1.com, sub.dom1.com, dom2.com

私が困っているスクリプトとサイトは、この例の dom1.com です。私は、以下のデータを集約する2つのプロパティを持っています。

プロパティA:dom1.com + sub.dom1.com プロパティ B : dom1.com + sub.dom1.com + dom2.com

私のコードにバグがないか探していますが、問題がわかりません、それは。

プロパティAでは、すべてが正しく集計され、ドメインとサブドメインの両方がデータを正常に送信しています。プロパティ B では、sub.dom1.com と dom2.com はデータを送信していますが、dom1.com は送信していません。

dom1.comのヘッダーにあるスクリプトです。

ga('create', 'PropertyA', 'auto', {'name': 'trackerA'}, {'allowLinker': true});
ga('trackerA.send', 'pageview');
ga('require', 'linker');
ga('linker:autoLink', ['sub.dom1.com', 'dom1.com']);

ga('create', 'PropertyB', 'auto', {'name': 'trackerB'}, {'allowLinker': true});
ga('trackerB.send', 'pageview');
ga('require', 'linker');
ga('linker:autoLink', ['sub.dom1.com', 'dom1.com', 'dom2.com']);

スクリプトが実行されない場合に備えて、上の2番目のトラッカーを移動してみましたが、何も解決しませんでした。リンカーを2回使おうとしているところに問題があると思うのですが、もしかしてやり方が悪いのでしょうか?

少しでも誰かの役に立てれば幸いです。

解決方法は?

あなたの実装にはいくつかの問題があります(これらのすべてがあなたの問題に寄与しているわけではありませんが、それでも一般的にはベストプラクティスです)。

  1. 一般的に、多くのプラグインがトラッカーに保存されている動作やデータを変更するため、トラッカーで何かする前に、常にすべてのプラグインを要求し、プラグインの初期化を呼び出す必要があります。

  2. でサブドメインを指定する必要はありません。 autoLink メソッドを使用しているので、自動的に追跡されます。 auto を使用して、Cookieの自動ドメイン設定を有効にします。

  3. に2つのオブジェクトを渡すことはできません。 create そのかわり、これらのオプションをひとつのオブジェクトにまとめるか、 短縮形 (例. ga('create', trackingID, cookieDomain, trackerName, additionalConfigOptions);

  4. 複数のトラッカーを使用する場合、プラグインの要求やプラグインメソッドを呼び出す際にトラッカー名を指定する必要があります (例 ga('trackerName.require', 'pluginName');ga('trackerName.pluginName:methodName', methodOptions); )

以下のようにコードを更新すれば、うまくいくはずです。

ga('create', 'PropertyA', 'auto', 'trackerA', {'allowLinker': true});
ga('trackerA.require', 'linker');
ga('trackerA.linker:autoLink', ['dom1.com']);
ga('trackerA.send', 'pageview');

ga('create', 'PropertyB', 'auto', 'trackerB', {'allowLinker': true});
ga('trackerB.require', 'linker');
ga('trackerB.linker:autoLink', ['dom1.com', 'dom2.com']);
ga('trackerB.send', 'pageview');