📈

旧GA(UA)と新GA4の共存方法

2023/03/06に公開

まずGA4の測定IDを入手する

  1. https://analytics.google.com/ に行く
  2. 「管理」→「GA4 設定アシスタント」 (移行を促す上の通知から遷移してもいい)
  3. 「新しい Google アナリティクス 4 プロパティを作成する」→「はじめに」
  4. モーダルが開くので「作成して続行」
  5. 「手動でインストールする」タブを選択する
  6. 明示されているタグをクリップボードにコピーする

このあたりの手順が本当に難しい。
初回専用というか GA4 にまだ移行していない人専用の画面でいろいろ促してくるため二度目に来たときに本来の遷移がわからなくなってしまう。

測定IDを探し出す

ややこしいのだがユニークIDが二つ存在する。

  • ストリームID: 1234567890 (ただの数字)
  • 測定ID: G-XXXXXXXXXX (必ず G- から始まる)

これを混同してはいけない。
gtag に書くのは測定IDの方になる。
そしてこれがどこに書いてあるのかがまたわかりづらい。

  1. 管理
  2. 左上で「GA4」に変更
  3. データストリーム
  4. 一つ目の項目の右端矢印クリック
  5. ウェブストリームの詳細が表示される

そこに測定ID G-XXXXXXXXXX が隠されている

<head> の直後に貼り付けてはいけない

貼り付けていいのは新規の場合のみ

HTMLの場合

既存のID指定部分と同様に新しいIDを追加するだけでよい

   gtag('config', 'UA-OOOOOOOOO-1');
+  gtag('config', 'G-XXXXXXXXXX');

フレームワーク向けの何かを別段活用しているのでなければ全部この方法でよさそうな気もする
@nuxtjs/google-analytics のように公式にもかかわらずすぐサポートが切れたり[1]すると何のために使っていたのかわからない(小声)
シンプルが一番!

https://developers.google.com/analytics/devguides/collection/ga4/basic-tag?technology=gtagjs

Nuxt.js 2 系の場合

@nuxtjs/google-analytics は GA4 に対応していないので消す

npm rm @nuxtjs/google-analytics

nuxt.config.js からも @nuxtjs/google-analytics の設定を削除する

代替として @nuxtjs/google-gtag を入れる

npm i @nuxtjs/google-gtag

nuxt.config.js に新しい設定を書き加える

--- a/nuxt.config.js
+++ b/nuxt.config.js
   ** Nuxt.js modules
   */
   modules: [
+    [
+      "@nuxtjs/google-gtag", {
+        id: "G-XXXXXXXXXX",
+        // config: {
+        //   anonymize_ip: true,        // anonymize IP
+        //   send_page_view: false,     // might be necessary to avoid duplicated page track on page reload
+        //   linker: {
+        //     domains: ["domain.com", "domain.org"],
+        //   },
+        // },
+        // debug: true,                 // enable to track in dev mode
+        // disableAutoPageTrack: false, // disable if you don"t want to track each page route with router.afterEach(...).
+        additionalAccounts: [
+          {
+            id: "UA-XXXXXXXXX-1",        // required if you are adding additional accounts
+            // config: {
+            //   send_page_view: false, // optional configurations
+            // },
+          },
+        ],
+      },
+    ],

additionalAccounts の方に従来のIDを指定する

コードも互換性がないので変更する

-  this.$ga.event(category, "click")
+  this.$gtag("event", "click", {event_category: category})

Vue.js 2 系の場合

https://matteo-gabriele.gitbook.io/vue-gtag/v/master/multiple-domain-tracking

   import VueGtag from "vue-gtag"
    
   Vue.use(VueGtag, {
     config: {
       id: "UA-XXXXXXXXX-1",
     },
+    includes: [
+      { id: "G-XXXXXXXXXX" },
+    ],
   })

vue-gtag は古い Vue.js で動く 1 系を使うこと
includes の方に新しいIDを追加する

VuePress 1 系の場合

@vuepress/plugin-google-analytics は2専用なのかわからないが動かない
とりあえず config.js 経由で head に埋める
既存のタグがある場合は gtag を二つ書く

.vuepress/config.js
module.exports = {
  head: [
    ['script', { async: true, src: 'https://www.googletagmanager.com/gtag/js?id=G-XXXXXXXXXX', }],
    ['script', {}, ["window.dataLayer = window.dataLayer || [];\nfunction gtag(){dataLayer.push(arguments);}\ngtag('js', new Date());\ngtag('config', 'G-XXXXXXXXXX);"]],
  ],
}

https://github.com/vuejs/vuepress/issues/2713#issuecomment-806621348

脚注
  1. 正確には依存していた vue-analytics が終わったらしい ↩︎

Discussion