どうもこんばんわ。
キスから始まるギャルの恋 〜くるみのウワサとホントのキモチ〜 攻略しました。
いいね!次回作も予約した
丁寧に書かれてて?良かったと思います
本題
GoogleアナリティクスからGA4を使ってみませんかって定期的にメールでお知らせしてくるので対応してみた。
Next.jsで作り直した記念に
環境
なまえ | あたい |
---|
Windows | 10 Pro |
Next.js | 記述時時点最新版 |
React | 17 |
言語 | TypeScript。JavaScriptの場合はコピペ出来ないのでにらめっこして書き換えて;; |
参考
thx!!!!!
https://github.com/vercel/next.js/tree/main/examples/with-google-analytics
https://panda-program.com/posts/nextjs-google-analytics
GA4 と UA はぜんぜん違う?
なんか後継みたいな雰囲気(なぜか変換できない(できてる))出してますが、UIからして結構違うシステムらしい?
なんならユニバーサルアナリティクス (UA)
時代に集計したデータはGoogle アナリティクス 4 (GA4)
には引き継げないみたいですよ?
データがGA4に引き継げないのはしんどいので、とりあえずはユニバーサルアナリティクス
とGoogle アナリティクス 4
の同時利用で行きます(同じ結果が集計されるはず)。
(ちょっと時間が経っちゃったからうろ覚え)
単語集
きー | ばりゅー |
---|
ユニバーサルアナリティクス | 略してUA。設定を開いた際にGA4 設定アシスタント があればUA |
Google アナリティクス 4 | 略してGA4。リアルタイムのページに地図が表示されていればGA4 |
測定 ID | GA4で使うID。 G- から始まる |
トラッキングコード | UAで使うID。 UA- から始まる |
既存のユニバーサルアナリティクスでGA4を有効にする
ブラウザでUAの方の設定画面を開いて、Google アナリティクス 4 プロパティの設定アシスタント
を選んで、始めます
こんな画面が出るけど、今回は UA → GA4 へイベントの転送は行わずに、それぞれ対応するのでチェックマークはそのままにして、プロパティを作成をおします。
(自分でHTMLを書き換えることが出来ない場合のための処置だと思う)
作成できるとGA4の管理ページへ移動できるボタンが現れるのでそのままおします。
移動したら、タグの設定
を押して、一つだけデータストリームがあると思うのでそれを選択します。
そしたら、表示されている測定 ID
を控えます。G-
から始まるやつですね。
Next.js(のnext/router)でも動くように対応する
測定 ID
を控えた画面にある歯車マーク⚙を押して、拡張計測機能の設定をします。
ここのページビュー数
の詳細設定
を押して、ブラウザの履歴イベントに基づくページの変更のチェックマークを外して、保存を押します。
なぜ?
Next.js 等のJSフレームワーク
では画面を動的に書き換えて(ブラウザのロードを挟まない)画面遷移が行われるため、Googleアナリティクスではページ遷移イベントを捕捉出来ません。
ので、自分でページ遷移イベントを送信する必要があるのですが、なんかGA4にロードを挟まない遷移を捕まえることが出来るようになったらしく、このままでは二重で計測されてしまう。
そこでGA4の計測の設定を変えます。
もしかしたら、上記のチェックマークをONにしておくと、ページの変更イベントをわざわざ送信する必要もなくなるかもしれないけど、UAと合わせたいので今回はOFFで行きます。
(analytics.js から gtag.js へ移行する)
もしgtag.js
で書いていた場合はここは飛ばしていいと思います。
UAの方の設定画面を開いて、トラッキング情報 > トラッキングコードへ進み、トラッキング IDをコピーします。UA-
から始まるやつですね。
Next.js での作業
_app.tsx
(jsxかもしれん)を開きます。
作っていない場合は他調べて作って下さい。
そしたら、以下を参考に書いて下さい(まるなげ)
analytics.js時代のコードは消しちゃえ~。
定数UA_TRACKING_ID
の中には各自UAのトラッキングIDを入れて下さい。
gtag.js に GA4 も計測するように書き足す
gtag('config', '${UA_TRACKING_ID}');
と同じ様にGA4の測定 IDを登録します。
gtag.js
を読み込んでる<script>
タグはそのままUAのを使えるみたいです。
以下例:
Next.jsの next/script 使えないの?
これ使うと<body>
内に<script>
埋め込んでるっぽいんだけどどうなんだろう。Googleアナリティクスは<head>
内に書いてって言われてるので...
UAの gtag.js 転用して使えんのかよwww
既存の gtag.js を読み込んでいる場合はGA4の測定IDを登録する一行をそのまま書き足せばOKらしい。やるやん
https://support.google.com/analytics/answer/9310895?hl=ja&utm_id=ad#which_product&zippy=%2Cこの記事の内容
next/router のページ遷移イベントを登録する
このままだと初回の読み込みは正しく送信されますが、ページを切り替えた際には対応できません。
のでnext/router
の遷移イベントをGA4とUAへ飛ばします。
以下例:
TSなのにas any
してるから参考にするには良くないかも。
JavaScript派閥の方はTypeScriptの型注釈(とキャスト)を消して、どうぞ。
これで多分対応は終了です。
GA4とUAそれぞれ開いて、ちゃんとリアルタイムに現れたら成功だと思います。
番外編 GoogleAnalytics.tsx にまとめる編
_app.tsx
が長くなるとしんどいので分けておくと良いと思います。
ついでに本番環境のみGoogle アナリティクスを動作させるようにしました。
これを_app.tsx
で呼ぶようにすればおっけ
もしパクった場合は本番環境のみで動くので、動いてるか確認したい場合は
npm run build
npm run start
すれば本番環境のビルド成果物をホストした開発サーバーが立ち上がります。