freks blog

about

GA4をReact.jsで使ってみる

created: 2024-11-07
おすすめ記事: 出会ってよかったプログラマー本

Google Analytics 4 (GA4) をReact.jsで使ってみました
Vite + TypeScript + React.jsの構成、ライブラリは使わずにやります

GA4の準備は GA4を使ってみる で用意したものを使います

下調べ

Google検索やChatGPTでざっとみましたが、古い情報な気がしたので公式ドキュメントを見ます

Measure single-page applications  |  Google Analytics  |  Google for Developers

SPAの場合は、History APIを使ってトラッキングできるようです
React Router v6 を使って、createBrowserRouter でルーティングすればよさそうです

1箇所、Google Analyticsの設定が必要そうなので見ます

Google Analyticsの設定

Settings > Data collection and modification > Data Streams > Web でプロパティを選んで
Events > Enhanced measurement の設定 > Page views で Show advanced settings を開く

Page changes based on browser history events にチェックを入れます
これでHistory APIのトラッキングできるようです

コード追加

React.jsのコンポーネントにGoogle Tag Managerを追加します
フックの形にしました

import { useEffect } from 'react';

function initialize(gtmId: string) {
  const script = document.createElement('script');
  script.text = `(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
  new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
  j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
  'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
  })(window,document,'script','dataLayer','${gtmId}');`;
  document.head.appendChild(script);

  const noscript = document.createElement('noscript');
  const iframe = document.createElement('iframe');
  iframe.src = `https://www.googletagmanager.com/ns.html?id=${gtmId}`;
  iframe.height = '0';
  iframe.width = '0';
  iframe.style.cssText = 'display:none;visibility:hidden';
  noscript.appendChild(iframe);

  document.body.prepend(noscript);
}

export function useGTM() {
  const GTM_ID = import.meta.env.VITE_GOOGLE_TAB_MANAGER_ID;

  useEffect(() => {
    if (GTM_ID) {
      initialize(GTM_ID);
    }
  }, [GTM_ID]);
}

react-router-domを読み込んだあとくらいに useGTM() を読み込めばトラッキングのコードが挿入されます

あとは環境変数 VITE_GOOGLE_TAB_MANAGER_ID に Google Tag ManagerのIDを設定します
.envに追記するとかデプロイ先のサーバーに設定するとかですね

あとは動かしてみて計測されたら完了です

前はlocalhostで動かすと計測されなかった気がしますが、今回は計測されました

まとめ

この手の調べ物はGoogle検索とか古い情報が使えないのでいまだに公式ドキュメントを見るのがいいですね

PR

How Google Works (日本経済新聞出版)

How Google Works (日本経済新聞出版)

このリンクは、アフィリエイトリンクです


Amazonのアソシエイトとして、blog.freks.jp は適格販売により収入を得ています。
This site is managed by freks