質問: ### 前提・実現したいこと Googleタグマネージャを使って、Googleアナリティクスでクリック数を取得したい。 仮装ページビュー、イベントトラッキング、両方のやり方を知りたいです。 なお、Googleタグマネージャの自動イベントトラッキング機能ではなく、データレイヤーの変数を利用した方法で実現したいです。 ※自動イベントトラッキング場合、class名やリンクURLが変更された時に、クリック数 が取得できなくなる可能性があります。また、Flash内のクリック数も取得したいため、上記方法で検討しています。 ### 疑問点 このとき、データレイヤー変数にデータを渡す方法は、 dataLayer.push(); dataLayer=[]; の2種類あり、 dataLayer=[];はページ内の一番目、 dataLayer.push();は二番目以降で使うようです。 また、このとき、順番に関係なくdataLayer.push();に統一するときは、 ``` window.dataLayer=window.dataLayer || []; dataLayer.push(['データレイヤ変数名':'渡す値']); ``` とやることで、統一することができるらしいです。 ここで、質問ですが、 Googleタグマネージャのスニペットタグは ``` ``` です。 ``` w[l]=w[l]||[]; ``` が記載されいます。 ``` window.dataLayer=window.dataLayer || []; と w[l]=w[l]||[]; は同じことを意味しているのではないのでしょうか? ```
回答: はい、 ``` window.dataLayer=window.dataLayer || []; ``` と ``` w[l]=w[l]||[]; ``` は同じことを表しています。 > > dataLayer=[];はページ内の一番目、 > > dataLayer.push();は二番目以降で使うようです。 > > > また、このとき、順番に関係なくdataLayer.push();に統一するときは、〜 > > > が意図していることは、 ``` ``` のように書いてしまうと、JSエラーが発生してしまうよ、ということです(まだdataLayerという名前のグローバル変数が定義されていないため)。 GTMのスニペットが常にHTMLの一番最初に記述されており、そのスニペットを呼び出す前にdataLayer変数にアクセスするJSを書かないように気をつけていれば、 ``` window.dataLayer = window.dataLayer || []; ``` の記述は不要です。