web-dev-qa-db-ja.com

gaまたは_gaq.PushをGoogleアナリティクスイベントトラッキングに使用しますか?

Cookieが存在するかどうかを確認する条件が渡された後、サイトのページ上のボタンのonclickを追跡したいと思います。

非常にシンプルですが、どの構文が最適ですか?

GAイベントトラッキング構文のgaおよびgaq_Pushプレフィックスを調査しましたが、間違っている場合はご容赦ください)

_gaq.Push

<script type="text/javascript">
jQuery(document).ready(function () {
    if (jQuery.cookie('entry_winagrand_cookie') !== null) {
        jQuery('notregisterbtn').on('click', function () {
            _gaq.Push(['_trackEvent', 'QR_Win_A_Grand', 'Clicked through to Register']);
        });
    }
});
</script>

ga

<script type="text/javascript">
jQuery(document).ready(function () {
     if (jQuery.cookie('entry_winagrand_cookie') !== null) {
         jQuery('notregisterbtn').on('click', function () {
             ga('send', 'event', 'button', 'click', 'QR_Win_A_Grand', 'Clicked_through_to_register');
         });
     }
});
</script>
51
Harry Lincoln

ga.js (「従来の」非同期コード)を使用する場合は、_gaq.Pushを使用する必要があります。 analytics.js を使用する場合は、ga sendを使用する必要があります。メソッドは互換性がなく、2つの異なるバージョンのGoogleアナリティクストラッキングコードに属します。

現在(2017)には新しいコードバージョン(gtag.js)があるため、それを使用する場合はga_gaq.Pushも使用せず、代わりに を使用します移行ガイドライン を使用して、コードを最新バージョンにアップグレードします(または、かなり賢明にGoogleタグマネージャーの使用を開始します)。

81
Eike Pierstorff

さまざまなイベントを追跡する必要がある場合は、コードをきれいにするための関数を作成します。

analytics.js

ga.js

function TrackEventGA(Category, Action, Label, Value) {
    "use strict";
    if (typeof (_gaq) !== "undefined") {
        _gaq.Push(['_trackEvent', Category, Action, Label, Value]);
    } else if (typeof (ga) !== "undefined") {
        ga('send', 'event', Category, Action, Label, Value);
    }
}
TrackEventGA('QR_Win_A_Grand', 'Clicked_through_to_register');
17
jLuna

サイトでanalytics.jsとga.jsの両方を実行している場合(analytics.jsがまだベータ版の場合に推奨)、両方を実行できますが、notregisterbtn関数でこれらを組み合わせます。

    <script type="text/javascript">
    jQuery(document).ready(function () {
        if (jQuery.cookie('entry_winagrand_cookie') !== null) {
            jQuery('notregisterbtn').on('click', function () {
                //you should first check if ga is set
                if (typeof ga !== 'undefined') {
                    ga('send', 'event', 'QR_Win_A_Grand', 'Clicked_through_to_register');
                 }
                //check if _gaq is set too
                if (typeof _gaq !== 'undefined') {
                    _gaq.Push(['_trackEvent', 'QR_Win_A_Grand', 'Clicked through to Register']);
                }
             });
        }
    });
    </script>
17
Blexy

これは、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','ga');

    ga('create', 'UA-77777777-2', 'auto');
    ga('send', 'pageview');
</script>

Backbone.jsの他のページを追跡するために、各Backbone.jsビュースクリプトに次のコードを配置します。

ga('send', 'pageview', myUrl);
1
Artem Zaika
/* universal event tracking */
function trackEventTag(category, action, opt_label) {
    /* analytics.js send event */
    ga('send', 'event', { 'eventCategory': category, 'eventAction': action, 'eventLabel': opt_label });
    /* add delay or additional tracking here */
    return true;
}
/* send ga.js _gaq.Push() events to universal tracker */
var _gaq = window._gaq || {
    Push: function (ar) {
        if (ar && ar.constructor === Array && 0 in ar) {
            if (ar[0] == '_trackEvent') {
                var category = 1 in ar ? ar[1] : null, action = 2 in ar ? ar[2] : null, opt_label = 3 in ar ? ar[3] : null;
                return trackEventTag(category, action, opt_label);
            }
            /* test for others you want to translate here */
        }
        return true;
    }
};
0
AnOldMan