Next.jsでGoogleタグマネージャーを設置する使い方 実装サンプルで導入手順を確認する
2025年12月21日
Next.jsで作ったアプリケーションに
Googleタグマネージャー を設置するやり方をメモします。
Typescriptにて記述しています。
環境
- React 16.3.2
- Next.js 5.1
- typescript 2.8.3
サンプルコード
ディレクトリ構成
css└── page
└── _document.tsx
読み込ませる場所の候補は色々とあると思うのですが
今回は page/_document.jsに記述しました。
page/_document.jsは全テンプレートの雛形のようなもので
ここで定義した内容が基本的には全ページに出力されます。
gtmIDを設定してそのまま使えるようになっています。
page/_document.tsximport * as React from 'react';
import Document, { Head, Main, NextScript } from 'next/document';
export default class MyDocument extends Document {
public render(): JSX.Element {
const gtmID = 'GTM-XXXXXX';
const gtmScript = `(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}');`;
const gtmFrame = `<iframe src="https://www.googletagmanager.com/ns.html?id=${gtmID}" height="0" width="0" style="display:none;visibility:hidden;"></iframe>`;
return (
<html lang="ja">
<Head>
<meta charSet="utf-8" />
<meta name="viewport" content="width=device-width, minimum-scale=1, maximum-scale=1" />
<script
dangerouslySetInnerHTML={{__html: gtmScript}}
/>
</Head>
<body>
<noscript
dangerouslySetInnerHTML={{ __html: gtmFrame}}
/>
<Main />
<NextScript />
</body>
</html>
);
}
}
参考 Github
https://github.com/zeit/next.js/
著書
article2025年12月21日Next.jsとTypeScriptでSSGとSSRの型定義を使い方で整理 データ境界のベストプラクティス
article2025年12月21日Next.jsとTypeScriptでLintと整形をセットアップする手順 ESLint Stylelint PrettierとVSCode自動フォーマット
article2025年12月21日Next.jsをインストールしてTypeScript環境をセットアップする手順 最初に動かすまでを整理
article2025年12月21日Next.js 6から7へTypeScriptで移行を運用する手順 実施対応を再現できる形で整理
article2025年12月21日Next.js 5から6へTypeScriptで移行を運用する手順 実施対応を再現できる形で整理
article2025年12月21日Next.jsでGoogleタグマネージャーを設置する使い方 実装サンプルで導入手順を確認する
article2026年1月7日TypeScriptでlodash型定義を使いこなす使い方 ユーティリティ運用で型が崩れる理由と補強策
article2026年1月7日TypeScriptでミドルウェアを設計する ExpressとNestJSの応用例で型安全に整理する
article2026年1月7日TypeScriptとPrismaでORMを設計する 型安全な境界設計と運用の要点
article2026年1月6日TypeScriptでパフォーマンスを比較・検証する ts-benchで計測して最適化へつなげる
article2026年1月6日PrismaとTypeScriptのユースケース 型安全なDBアクセス設計とCRUD実装を極める
article2026年1月5日EmotionとTypeScriptで型安全スタイリングを始めるセットアップ手順 テーマとProps設計
article2026年1月7日TypeScriptでlodash型定義を使いこなす使い方 ユーティリティ運用で型が崩れる理由と補強策
article2026年1月7日TypeScriptでミドルウェアを設計する ExpressとNestJSの応用例で型安全に整理する
article2026年1月7日TypeScriptとPrismaでORMを設計する 型安全な境界設計と運用の要点
article2026年1月6日TypeScriptでパフォーマンスを比較・検証する ts-benchで計測して最適化へつなげる
article2026年1月6日PrismaとTypeScriptのユースケース 型安全なDBアクセス設計とCRUD実装を極める
article2026年1月5日EmotionとTypeScriptで型安全スタイリングを始めるセットアップ手順 テーマとProps設計
blogiPhone 17シリーズの発表!全モデルiPhone 16から進化したポイントを見やすく整理
blogGoogleストアから訂正案内!Pixel 10ポイント有効期限「1年」表示は誤りだった
blog【2025年8月】Googleストア「ストアポイント」は1年表記はミス?2年ルールとの整合性を検証
blogGoogleストアの注文キャンセルはなぜ起きる?Pixel 10購入前に知るべき注意点
blogPixcel 10シリーズの発表!全モデル Pixcel 9 から進化したポイントを見やすく整理
blogフロントエンドエンジニアの成長戦略:コーチングで最速スキルアップする方法
review今の自分に満足していますか?『持たざる者の逆襲 まだ何者でもない君へ』溝口勇児
reviewついに語られた業界の裏側!『フジテレビの正体』堀江貴文が描くテレビ局の本当の姿
review愛する勇気を持てば人生が変わる!『幸せになる勇気』岸見一郎・古賀史健のアドラー実践編で真の幸福を手に入れる
review週末を変えれば年収も変わる!『世界の一流は「休日」に何をしているのか』越川慎司の一流週末メソッド
review新しい自分に会いに行こう!『自分の変え方』村岡大樹の認知科学コーチングで人生リセット
review科学革命から AI 時代へ!『サピエンス全史 下巻』ユヴァル・ノア・ハラリが予見する人類の未来
