5
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

ぼくのかんがえたさいきょうのGoogle Analyticsマルチトラッキング用読み込みコード

Last updated at Posted at 2016-03-02

マルチトラッキングして欲しいという依頼があったので、自分的に使いやすい形を考えてみた。

  • トラッキングIDを一元管理できるようにしたいの
  • 各IDごとにイベント送信を個別で行うのも面倒なのでイベント送信処理を一発して行う関数も欲しい

というわけで以下のようなものを作ってみた。試してみた感じ普通に使えてる。

<script>
    var sites = [['UA-XXXXXXXX-X'],['UA-XXXXXXXX-X','trackB'],['UA-XXXXXXXX-X','trackC']];
    window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)};ga.l=+new Date;
    !function(a){var n=[];a.forEach(function(a){var t=a[1],o=t?{name:t}:{};ga("create",a[0],"auto",o),n.push((t?t+".":"")+"send")}),window.gall=function(){var a,t,o=n,r=arguments;o.forEach(function(n){var o=[n];for(a=0,t=r.length;t>a;a++)o.push(r[a]);ga.apply(this,o)})}}(sites);

    gall('pageview');
</script>
<script async src='//www.google-analytics.com/analytics.js'></script>

sitesに渡している2次元配列は、2項目目がcreateコマンドのnameキーの値として扱われる。

ここで自動的にcreateされたものに一括してsendする関数がgall()

これで、ga("foo.send",baz);ga("bar.send",baz)みたいな書き方をしなくても良くなる。send専用なので第1引数はなく、そのままgall(baz,.....)で良い。

gaでsendするのは大体XHR時のページ遷移ぐらいなので大体これで事足りる。ちょっと便利だと思うので面倒だなーと思ったら是非。

5
4
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?