なぜか、Googleアナリティクスが反映されません。
ReactでSPAのサイトを構築しています。
SPAのため、ルーティング変更の際に毎回、gtagのconfigを書き換え送る必要があることは認識しており、componentDidUpdate
内でそれらをハンドリングしております。
index.html
1<head> 2 <!-- Global site tag (gtag.js) - Google Analytics --> 3 <script async src="https://www.googletagmanager.com/gtag/js?id=GA_TRACKING_ID"></script> 4 <script> 5 window.dataLayer = window.dataLayer || []; 6 function gtag(){dataLayer.push(arguments);} 7 gtag('js', new Date()); 8 9 gtag('config', 'GA_TRACKING_ID'); 10 </script>
App.jsx
1componentDidUpdate(prevProps) { 2 const gtag = window.gtag 3 4 if (prevProps.location.pathname === this.props.location.pathname) { 5 return; 6 } 7 8 if (prevProps.history.action === 'PUSH' && typeof (gtag) === 'function') { 9 console.log('in func') 10 gtag('config', 'GA_TRACKING_ID', { 11 'page_location': window.location.href, 12 'page_path': this.props.location.pathname, 13 }); 14 } 15}
上記の"GA_TRACKING_ID"に関しては、すべて自分のトラッキングIDを記入しています。かなり確認しましたので、間違いないです。
また、"App.jsx"で記しているconsole.log("in func")
は、ページ遷移のタイミングでコンソールから確認できております。
this.props.location.pathname
に関しましても、正しく現在のページのURLが読み込まれていることを確認しております。(例えば、"/React/react-router-usecase"など)
chromeのdevツールのNetworkを確認したところ、
- analytics.js
- https://www.googletagmanager.com/gtag/js?id=GA_TRACKING_ID
- _utm.gif?なんちゃら
以上3つの、ga関連のものと通信はあることがわかりました。
一番不思議なのは、SPAであっても、少なくとも1回は、index.htmlが読み込まれるはずであり、そのタイミングでカウントは走ると思っていました。しかし現実には、GAのコンソール画面のリアルタイムには現れず、ステータスには「過去 48 時間に受信したデータはありません。」と現れる始末です。
GAとの通信が失敗している理由として、他にどのようなことが考えられるでしょうか?
お助け願います。
よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。