技術情報ブログ
SharePoint
2026.07.08

SharePointのリストアイテム閲覧数をGA4で計測する方法|X-SP Feature アクセス解析支援

SharePointのリストアイテム閲覧数をGA4で計測する方法|X-SP Feature アクセス解析支援

この記事の4行要約

  • X-SP Featureアクセス解析支援機能では、SharePointの.aspxページに解析用タグを自動埋め込みが可能

  • SharePointリストアイテムはポップアップで開かれることがあり、そのままではGA4のページビューとして計測できない

  • GTMでpage_locationを送信する設定を追加すると、直接開いた場合もポップアップで開いた場合もGA4の「ページとスクリーン」で集計できる

  • 本記事では、SharePointでGA4計測をGTM設定を通じて実現する方法を、7つの手順で解説します。

この記事を書いた人
小刀稱知哉

小刀稱 知哉ことね ともや

SharePoint Power Platform全般 Copilot Studio 技術アドバイス・教育支援

Power PlatformやSharePointを中心に設計・開発・アドバイス・教育まで幅広く担当しています。内製化をご希望の場合はお気軽にお問い合わせください!

2025 Microsoft MVP(Power Apps・Power Automate)
PL-200 PL-300 PL-400 PL-600 MS-700 AZ-104 AZ-305 SC-200 SC-100

SharePointリストアイテムを開くとポップアップ(ダイアログ)として表示されるため、標準的なGA4タグではページビューとして計測できないという課題があります。
X-SP FeatureのアクセスA解析支援機能が自動埋め込みするタグと、GTMのdataLayerイベントを組み合わせることで、直接表示・ポップアップ表示のどちらでもGA4にpage_viewとして送信できます。

本記事では、SharePointリストアイテムのポップアップ検知スクリプトの追加から、GTMの変数・トリガー・タグの設定、GA4のカスタムディメンション追加まで、7つの手順でリストアイテムの閲覧数をGA4で計測する方法を解説します。

もし記事を読んで「自社にとって最適なSharePointを構築したい」「構築時のサポートを行ってほしい」と思った方は、アーティサン株式会社の各種サービスをご活用ください。
現場の課題やご要望に合わせて、SharePointの設計・導入・運用をサポートいたします。

X-SP Feature | SharePoint 拡張機能サービス
X-SP Feature | SharePoint 拡張機能サービス
詳しく見る →
X-SP Design | SharePoint デザイン拡張サービス
X-SP Design | SharePoint デザイン拡張サービス
詳しく見る →
SharePoint伴走パートナーサービス
SharePoint伴走パートナーサービス
詳しく見る →
SharePoint 構築支援サービス
SharePoint 構築支援サービス
詳しく見る →
官公庁DX支援サービス
官公庁DX支援サービス
詳しく見る →
内製化支援サービス(Power Apps・Power Automate・Copilot Studio)
内製化支援サービス(Power Apps・Power Automate・Copilot Studio)
詳しく見る →
Power Apps・Power Automate 導入支援サービス
Power Apps・Power Automate 導入支援サービス
詳しく見る →

MSクラウドに関するご相談・お問い合わせはこちら

お問い合わせフォームへ

こんにちは。アーティサン株式会社の小刀稱(ことね)です。

SharePointを社内ポータルサイト(グループウェア)として活用している企業様は多いと思います。
弊社も従来からSharePoint 構築支援サービスを提供しており、企業様の社内ポータルサイト構築や活用支援をさせていただいております。
弊社としては、SharePointで社内ポータルサイトを構築する際、SharePointが持つ強みを最大限に活かすため、なるべく標準機能のみで対応することを推奨しております。

しかし、実際の運用を開始すると多くの企業から「標準機能だけでは物足りない」という不満を伺うことも多いのが事実です。

そこで、弊社ではX-SP Featureというサービスの提供を開始しました。
本サービスは、SharePointの標準機能では対応できないアドオン機能を、SharePoint Framework(SPFx)というSharePointの拡張開発技術を用いて提供するSharePointアドオンサービスです。

X-SP Featureをご活用いただくことで、標準機能では限界を感じていた皆様の「本当に欲しかった機能」を簡単に導入できます。

今回は、X-SP Featureのアクセス解析支援機能を使って、リストアイテムの閲覧数をGA4で取得する方法について紹介します。
X-SP Featureのアクセス解析支援については、以下のブログを参照してください。

また、X-SP Featureの他の機能については、以下をご参照ください。

 

SharePointリストアイテムを開いた時の問題点

X-SP Featureのアクセス解析支援機能をご活用いただくと、SharePointの各ページ(拡張子が「.aspx」となっているページ)が表示された際に、設定した解析用タグを自動的に埋め込むことができます。
そのため、SharePointのページやニュースであれば、GA4・GTM・Clarityなどが出力する解析用タグを使って、ページ閲覧数や閲覧行動を分析可能です。

ただし、SharePointリストのアイテム表示には少し注意が必要です。

SharePointリストでアイテムを開くと、画面全体が別ページへ遷移するのではなく、現在のページ上に詳細画面がポップアップ(ダイアログ)として表示されます。
(「リスト」Webパーツからアイテムをクリックしても、同様の処理となります。)

つまり、ユーザーから見ると「リストアイテムを開いた」状態ではありますが、ブラウザー上では新しい.aspxページが表示されているわけではないため、ページ表示をきっかけに埋め込まれる解析用タグだけでは、リストアイテムの表示を正しく計測できません。

そこで本記事では、リストアイテムのポップアップ表示を検知し、GA4のpage_viewとして計測するための構築方法を説明します。
この構築を行うと、リストアイテムを直接開いたとき、またはポップアップで開いたときのどちらの場合でも、GA4上で同一に集計できるようになります。

 

全体構成

今回の全体構成は以下のとおりです。

SharePointリストアイテムの閲覧数をGA4で取得する全体構成

 

前提条件

本手順では、以下項目が既に設定されていることを前提としています。

  • X-SP Featureアクセス解析支援機能を導入済み

  • Google Analytics 4(GA4)プロパティを作成済み

  • Google Tag Manager(GTM)コンテナを作成済み

  • GTMが発行したタグを、SharePoint側のSPOリスト(TagManager)に設定済み

  • SharePointのページを開いたときに、GTMのタグが読み込まれている


以下では、全体構成図の「今回構築する内容」にあたる部分を設定します。

※注意※
なお、本記事の方法はSharePoint Onlineの画面構造やポップアップ表示のDOMを前提としています。
Microsoft側の仕様変更により、検知対象の要素や動作確認方法を調整する必要がある場合があります。

 

構築手順

 

手順1:SharePointリスト(TagManager)にスクリプトを追加する

SharePointリスト(TagManager)に、以下のスクリプトを追加します。

<script>
(function () {
  var lastItemId = null;
  var lastSentPageLocation = null;
  var lastSentAt = 0;

  function interceptXHR() {
    if (XMLHttpRequest.prototype.open._sptagPatched) return;

    var origOpen = XMLHttpRequest.prototype.open;
    XMLHttpRequest.prototype.open = function(method, url) {
      this._sptagUrl = url;
      this._sptagMethod = method;
      return origOpen.apply(this, arguments);
    };
    XMLHttpRequest.prototype.open._sptagPatched = true;

    var origSend = XMLHttpRequest.prototype.send;
    XMLHttpRequest.prototype.send = function(body) {
      var self = this;
      this.addEventListener('loadend', function() {
        if (typeof self._sptagUrl === 'string') {
          var m = self._sptagUrl.match(/itemId=(\d+)/i);
          if (m) {
            lastItemId = m[1];
            console.log('[SPTag] itemId captured:', lastItemId);
          }
        }
      });
      return origSend.apply(this, arguments);
    };
    XMLHttpRequest.prototype.send._sptagPatched = true;
    console.log('[SPTag] XHR interceptor applied');
  }

  function pushPageView(pageLocation) {
    var now = Date.now();

    if (pageLocation === lastSentPageLocation && now - lastSentAt < 3000) {
      console.log('[SPTag] duplicate page_view skipped:', pageLocation);
      return;
    }

    lastSentPageLocation = pageLocation;
    lastSentAt = now;

    window.dataLayer = window.dataLayer || [];
    window.dataLayer.push({
      'event': 'page_view',
      'event_category': 'SharePoint',
      'event_label': document.title,
      'page_location': pageLocation,
      'item_id': lastItemId
    });

    console.log('[SPTag] dataLayer pushed:', window.dataLayer[window.dataLayer.length - 1]);
  }

  interceptXHR();
  setInterval(interceptXHR, 1000);

  var observer = new MutationObserver(function (mutations) {
    for (var i = 0; i < mutations.length; i++) {
      for (var j = 0; j < mutations[i].addedNodes.length; j++) {
        var node = mutations[i].addedNodes[j];
        if (!(node instanceof HTMLElement)) continue;

        var dialog = node.matches('[role="alertdialog"]')
          ? node
          : node.querySelector('[role="alertdialog"]');

        if (!dialog) continue;

        var listPath = location.pathname.replace(/\/[^\/]*$/, '');
        var pageLocation = lastItemId
          ? location.origin + listPath + '/DispForm.aspx?ID=' + lastItemId
          : location.href;

        console.log('[SPTag] dialog detected, lastItemId:', lastItemId);
        console.log('[SPTag] page_location:', pageLocation);

        pushPageView(pageLocation);
        return;
      }
    }
  });

  observer.observe(document.body, { childList: true, subtree: true });
})();
</script>
SharePointのTagManagerリストにスクリプトを追加

 

手順2:GTMで変数を作成する

続いて、GTMで変数を作成します。
手順1で追加したスクリプトでは、リストアイテムのポップアップ表示を検知した際に、以下情報をGTMへ送信しています。

window.dataLayer.push({
  event: 'page_view',
  event_category: 'SharePoint',
  event_label: document.title,
  page_location: pageLocation,
  item_id: lastItemId
});

ここで重要なのが、page_locationです。
SharePointリストアイテムの表示URLには、DispForm.aspx?ID=123のように、どのアイテムを開いたかを示すIDがクエリ文字列として含まれます。
※実際のURLのサンプルは以下

https://yoursite.sharepoint.com/sites/sample/Lists/sampleList/DispForm.aspx?ID=123

GA4でリストアイテムごとの閲覧数を確認するには、上記の?ID=123まで含んだURLを送信しなければなりません。
上記を行うには、dataLayerに入っているpage_locationを、GTM側で参照できる状態にする(=GTM側で「変数を作成する」)必要があります。

作成する変数の設定値は以下です。

設定項目

設定値

変数名

Variable_pageLocation(※名称はお好みで)

変数のタイプ

データレイヤーの変数

データレイヤーの変数名

page_location

データレイヤーのバージョン

バージョン2

GTMで変数を作成

 

手順3:GTMでトリガーを作成する

GTMで、スクリプトが送信したイベントを受け取るためのトリガーを作成します。
作成するトリガーの設定値は以下です。

設定項目

設定値

トリガー名

Trigger_page_view(※名称はお好みで)

トリガーのタイプ

カスタムイベント

イベント名

page_view(※名称は固定)

このトリガーの発生場所

すべてのカスタムイベント

GTMでリストアイテム表示用のカスタムイベントトリガーを作成する画面

 

手順4:GTMでGA4イベントタグを作成する

GA4へイベントを送信するタグを作成します。
作成するタグの設定値は以下です。

設定項目

設定値

タグ名

Tag_page_view(※名称はお好みで)

タグの種類

Google アナリティクス:GA4イベント

測定ID

G-xxx(※GA4の測定ID)

イベント名

page_view(※名称は固定)

イベント パラメータ

page_location(※名称は固定)

{{Variable_pageLocation}}(※作成した変数を設定)

GTMでGA4イベントタグを作成する画面

 

手順5:GTMを公開する

トリガーとタグを作成したら、GTMのワークスペースを公開します。

 

手順6:GTM・GA4で動作確認する

一旦、上記までで設定した値が、正常に動作しているか確認します。

 

手順6-1:GTMのプレビューでトリガー・タグが正常に動作しているか確認する

GTMの右上にある「プレビュー」をクリックして、SharePointのURLを入力します。
その後、SharePointリストのアイテムをクリックしてください。

履歴の変更 → 配信されたタグ → Tag_page_view → タグの詳細 → eventSettingTable をご確認ください。
parameterが”page_location”、parameterValueの末尾が”DispForm.aspx?ID=xxx”となっていれば正常に動作しています。

GTMプレビューでpage_viewイベントを確認する画面

 

手順6-2:GA4のDebug Viewで正常に取得しているか確認する

続いて、GA4側で正常に取得できているか確認します。

管理 → データの表示 セクション → DebugView をクリックしてください。

タイムラインの中にある page_view → page_location を確認し、末尾が”DispForm.aspx?ID=xxx”となっていれば正常に動作しています。

GA4のDebugViewで値を確認

 

手順7:GA4でカスタムディメンションを追加する

上記までの手順で、正常に動作していることは確認できました。
最後に、GA4側でディメンションを追加することにより、クエリ文字列込みで「ページとスクリーン」から確認できるようにします。

レポートの右上の編集(鉛筆アイコン) → ディメンション → ディメンションを追加 → ページパス+クエリ文字列 を追加してください。

GA4でリストアイテム分析用のカスタムディメンションを追加する画面

※注意※
GA4のレポートに反映されるには時間がかかる場合があります。

GA4のページとスクリーン

この状態になると、リストアイテムを直接開いた場合と、ポップアップで開いた場合のどちらも、GA4のpage_viewとして集計できます。


SharePointのアクセス解析支援、まずはデモでご確認ください

実際の動作をサンプルサイトでご覧いただけます。
導入前のご相談・お見積りも無料で承っております。

 

FAQ

Q: X-SP Featureのアクセス解析支援機能とは、どのような機能ですか?
A: アーティサンが開発したSharePointのアドオン機能です。Google Analytics(GA4)・Microsoft Clarity・Google Tag Manager(GTM)などの解析ツールが提供するタグを、SharePointに対して自動的に埋め込むことができます。

Q: アクセス解析支援機能を導入するメリットは?
A: SharePointサイトのアクセス状況を、普段使い慣れた解析ツールで分析できるようになります。
 手動でページごとにタグを追加する必要がなく、設定リストへの登録だけで全ページへ自動適用されるため、運用コストを大幅に削減できます。

Q: 対応している解析ツールはどれですか?
A: タグ形式で提供されているものであれば、いずれも対応可能です。
  代表的なWeb解析ツールとしては、Google Analytics 4(GA4)・Microsoft Clarity・Google Tag Manager(GTM)が挙げられます。

Q: SharePointリストアイテムの閲覧数はGA4で取得できますか?
A: はい。X-SP Featureアクセス解析支援機能とGTMを組み合わせることで、SharePointリストアイテムの閲覧数をGA4で取得できます。リストアイテムを直接開いた場合だけでなく、ポップアップで開いた場合もpage_viewとして送信できます。

Q: リストアイテムを直接開いた場合とポップアップで開いた場合の両方を集計できますか?
A: はい。直接DispForm.aspx?ID=123を開いた場合は通常のページビューとして、ポップアップで開いた場合は今回追加するGTMタグから送信したページビューとして集計できます。

Q: X-SP Featureアクセス解析支援機能を使うメリットは何ですか?
A: SharePointへ解析用タグやスクリプトを一元的に配信できる点です。SharePointの各ページを個別に編集するのではなく、設定リストを通じて管理できるため、運用負荷を抑えながらGA4・GTM連携を実現できます。

 

おわりに

今回は、アーティサンが提供するX-SP Featureのアクセス解析支援機能を活用し、SharePointリストアイテムの閲覧数をGA4で取得する方法を紹介しました。

SharePointのリストは、FAQ・ナレッジ・申請管理・問い合わせ管理など、社内ポータルの重要な情報基盤として使われることが多い機能です。
リストアイテム単位の閲覧状況をGA4で確認できるようになると、社員が必要としている情報や、改善すべきコンテンツをデータにもとづいて判断しやすくなります。

アクセス解析支援機能の詳細や実際の挙動をご覧になりたい方は、ぜひ弊社までお気軽にお問い合わせいただければと思います!

もし記事を読んで「自社にとって最適なSharePointを構築したい」「構築時のサポートを行ってほしい」と思った方は、アーティサン株式会社の各種サービスをご活用ください。
現場の課題やご要望に合わせて、SharePointの設計・導入・運用をサポートいたします。

X-SP Feature | SharePoint 拡張機能サービス
X-SP Feature | SharePoint 拡張機能サービス
詳しく見る →
X-SP Design | SharePoint デザイン拡張サービス
X-SP Design | SharePoint デザイン拡張サービス
詳しく見る →
SharePoint伴走パートナーサービス
SharePoint伴走パートナーサービス
詳しく見る →
SharePoint 構築支援サービス
SharePoint 構築支援サービス
詳しく見る →
官公庁DX支援サービス
官公庁DX支援サービス
詳しく見る →
内製化支援サービス(Power Apps・Power Automate・Copilot Studio)
内製化支援サービス(Power Apps・Power Automate・Copilot Studio)
詳しく見る →
Power Apps・Power Automate 導入支援サービス
Power Apps・Power Automate 導入支援サービス
詳しく見る →

MSクラウドに関するご相談・お問い合わせはこちら

お問い合わせフォームへ

 

こちらも合わせて読みたい

Microsoftクラウド関連

シェアする
記事カテゴリ
最新記事
2026.07.08

SharePointのリストアイテム閲覧数をGA4で計測する方法|X-SP Feature アクセス解析支援

2026.07.01

SharePointのツリービューでフォルダ階層を直感的に表示する方法|X-SP Feature(第6回)

2026.06.24

カスタムスクリプト不要!SharePointでHTMLファイルを表示する方法|X-SP Feature(第5回)

2026.06.17

GA4・Clarity・GTMでSharePointのアクセス解析を行う方法|X-SP Feature(第4回)

2026.06.10

SharePointのアクセスランキングでよく見られるコンテンツを可視化する方法|X-SP Feature(第3回)

データ構造.Net Core Test ExplorerレスポンシブUpdateContext承認フロー送信元リストLoopショートカットキー時間外非エンジニアDataverseSharePoint Framework転職Slide showMicrosoft365サイトの種類OpenAPI請負契約効率化Power Platform CLI業務キー月額定額PV数 増やす共同所有者1行テキストPVツリービューモデル駆動型アプリSortByColumns関数Dataverse for TeamsDynamics 365ロードマップフォームメールの送信非表示Microsoftshortcut key通知体験談JavaScriptSPFx主キー比較移行要件定義MCPサーバー総合評価型入札資料作成開発手順複合キー委任問題権限トラブル主要な所有者複数行テキストWebパーツファイル管理Power AppsTypeScriptitem関数入門技術form差出人アプリdesignconcat関数ファイル勉強表示サンプルCopilot Studio社内ポータル多言語化サイト構成FAQエージェントデジタルトランスフォーメーション初心者向け拡張機能データ整合性Delegationアクセス権限環境変数選択肢閲覧数可視化リストアイテムPower PlatformHTMLGoogle Maps初心者Itエクスポートインスタントクラウドフロー[市民開発者JSON文字制限フィルター クエリ内製化切替samplePowerAppsグループウェアMUI権限設計AIチャットボットプロポーザル方式ハウツービルドデータベース設計サブスクリプション型支援ファイルパスクラシック画面日付Google Analytics表示回数SharePointEF CoreMarker Clusterer中級者DXインポート自動化したクラウドフロー構築デザインフロー実行ドキュメント ライブラリ市民開発登録者X-SPNFCタグエンゲージメントMultilingualデータ移行実運用官公庁システム画像挿入プロジェクト作成ユニークキーMVP共有設定ソリューションエクスポート整数GA4x-sp-feature-seriesExcelマイグレーションRANK()関数キャンバスアプリノウハウカスタマイズ委任自動化したクラウド フロー運用開発環境filter query管理システム列StyleDLPポリシー地方自治体MLJSON書式保守性デジタル化推進複数レコードPCFギャラリー一意制約技術支援情報漏洩対策権限管理データ型Microsoft ClarityPower AutomateFramework CoreDynamics 365 SalesDatePicker情報技術componentVBAフローの種類選択肢列環境sortガバナンス登録日StudioTestCopilot Studiot共有リンクテンプレート化DX推進テーマカラーPDF変換業務システムURLパラメータ技術ブログ 書き方コマンドバーカスタマイズ組織変更X-SP FeatureGTMC#Attribute directivesMicrosoft TranslatorDropdownメッセージIDダイアログエラーインスタント クラウド フロー参照列本番環境ソートerror notification更新者AICanvas自治体DXレポート化サイト複製作り方ダークモード資料自動作成キャンバスアプリ 違いメンテナンスモードエンジニア ブログ メリットSharePoint管理センター注文管理アプリ見逃し防止アクセス解析attributeO/Rマッパーマーカークラスタリングライブラリviewメールコンポーネントエクセルスケジュール済みクラウド フローChatGPTライセンスmultiple itemエラー通知更新日生成系AITest Studio生成AI自治体APIPnP PowerShellページ承認Formulasプロパティフロー設計Power Apps 導入並べ替えブログ 継続 コツDLPサブグリッド未読Google Tag Managervalidationazure sql databasetailwindcssビューfirst()関数dialogerrorレスポンシブ レイアウトOpenAI環境構築手順複数項目削除変更Copilotテスト事例HTTP リクエストカスタムスクリプトドキュメント管理カラーセットテンプレート活用Power Apps 比較ヘッダー非表示技術力向上権限管理ベストプラクティスDataverse テーブル既読タグ埋め込みローコードCase式マルチテナントアクセス制限nestTips復元responsive layoutオープンAIpipelineシェアポイントフォルダ外部DBlicenseテストスタジオ活用ワーケーション業務効率化IT管理カラーユニバーサルデザイン自動化事例モデル駆動型 とはリスト フィルタ文章力 鍛え方野良権限部署全文表示サイトの利用状況AngularHTTP Requestドロップダウンメニューノーコード入れ子新機能restoreデータ行の制限チャットGPTCI/CD便利機能ゴミ箱連携添付ファイルコントロール使い方サイトブランド化名古屋ファイル保存申請システムアプリデザインNode.jsシステム構築便利アウトプット 重要性Teams ファイル共有リレーションシップ閲覧数ヒートマップAccessCSSBreakpointObserver承認動的リスト変数Power BI引き継ぎgalleryパイプラインカレンダー完全削除接続ファイルサイズ基本知識フォントカスタマイズ体験記エンティティワークフロー自動化UI/UXVisual Studio CodeAlternate Key野良アプリ対策IT エンジニア 転職OneDrive1対多アクセスランキングSharePoint アドオンInfoPathxUnitメディアクエリリマインドcollection検索個人列退職ギャラリーDevOpsCalendarモデル駆動型データフローフルリモートワークPowerAutomateブランドセンター感想フォルダ構成設定アクセシビリティPCF代替キーCoEブログ モチベーションつながり参照多対多コンテンツ活用HTMLファイル表示MatTable.Net Core 3.1スマホSetコレクションMicrosoft 365グループユーザー列所有者を変更スクロールMicrosoft 365Teamsセキュリティロールrecycle binアーティサンX-SP Designテーマ作成チームサイトMicrosoft Learn Docsアジャイル開発Wordテンプレート環境構築重複チェック内製化コンサルティングネタ切れ 対策システムカスタマイザーER図強調表示されたコンテンツフォルダツリーAngular MaterialVSCodePCForAll複数の添付ファイルセキュリティグループSharePoint Online異動コンテナ簡易在庫管理ローコード開発ビジネスルールアクセス許可Artisanスライドショーデザイン拡張コミュニケーションサイトカスタムコネクタ準委任契約業務自動化カスタムコンポーネントGUIDITサポートAI ブログ 活用Connection Reference入門編UUドキュメントライブラリ
PageTop
ページトップに戻る