AngularでGTMを使用するにはどうすればよいですか?
このコードを使用して新しいパーシャルをロードすると、(仮想)ページビューイベントを発生させようとしています:
dataLayer.Push({
'event' : 'pageview',
'pageview' : $location.path(),
'virtualUrl' : $location.path()
});
しかし、イベントの発生が表示されません(Google Analytics Chromeデバッグ拡張機能を使用して、発生したイベントを表示しています)。
Chrome拡張機能の信頼性が低いことがわかりました。コンソールでグローバル変数dataLayer
を実行するだけで、イベントの配列が出力されます。オブジェクトの1つがページビューイベントである必要があります。
次に、使用方法の例を示します。
注:単に$location.path()
を使用しているのではなく、ドメインの後のURLのすべてを使用しています。これには、.search()
&.hash()
が含まれます。
$ location in the Angular docs
_(function(window, angular) {
'use strict';
angular.module('Analytic.module', ['Analytic.services']).
run(function($rootScope, $window, $location, GoogleTagManager) {
$rootScope.$on('$viewContentLoaded', function() {
var path= $location.path(),
absUrl = $location.absUrl(),
virtualUrl = absUrl.substring(absUrl.indexOf(path));
GoogleTagManager.Push({ event: 'virtualPageView', virtualUrl: virtualUrl });
});
});
})(window, window.angular);
_
_(function() {
angular.module('Analytic.services', []).
service('GoogleTagManager', function($window) {
this.Push = function(data) {
try {
$window.dataLayer.Push(data);
} catch (e) {}
};
});
})();
_
同じ名前のdataLayer変数をリッスンする_{{virtualUrl}}
_および_{{event}}
_マクロが必要です。
_{{event}}
_が 'virtualPageView'と等しい場合にトリガーされる発火ルールが設定されたGoogleアナリティクスイベントトラッキングタグが必要です。すべてのページの読み込みで実行されるように、デフォルトの「すべてのページ」ルールを必ず削除してください。代わりに、イベントをdataLayer.Push()
したときに実行します。これは、ページの更新ごとに複数回発生する可能性があります。
タグは次のように構成する必要があります。
angulartics ライブラリを使用することを強くお勧めします。複数のサイトで使用しています。それはあなたをかなり速く走らせます。
これには、仮想ページビューとイベントのサポートが含まれています。 GA eCommerceはサポートしていませんが、拡張性はサポートしています。
また、GTMとPiwikの両方で使用しました。
受け入れられた回答と同様に、単一ページアプリのコントローラーで、JavaScriptのpagename
変数を使用して、よりシンプルで明確なソリューションを作成しました。
// Note, this may not be how your app works, YMMV
var pagename = $location.path().substr(1,$location.path().length);
次のようにそれらをdataLayerにプッシュします。
window.dataLayer.Push({'event':pagename+'-page'})
次に、GTMで次のようにGTMにトリガーを追加しました。
Trigger: Custom Event
Event Name: home-page
... about-page、faq-pageなど.
より複雑なangularアプリの場合、AngularでGoogleアナリティクスとGoogleタグマネージャーを使用するためのいくつかの拡張機能があります。
Angulartics (プラグインアーキテクチャを介してGoogle Analytics以外のWeb分析ソリューションもサポートします)および関連する GTMのNPMパッケージ を参照してください。
コードを追加する必要はありません。
「履歴変更」トリガーを設定します。これはangularルート変更によってトリガーされます。トリガーとして「ページビュー」タグに追加します。