前回、前々回は実装するための準備を色々としました。今回は実際に実装していきます
検証で使用したバージョンはそれぞれ以下となります
また、改めてという形になりますが執筆時点での内容となりますので、表記等が変わっている可能性があります
| 名称 | バージョン |
|---|---|
| C# | .Net 9.0 |
| Google.Analytics.Data.V1Beta | 2.0.0-beta09 |
-
-
GoogleAnalyticsDataAPIを使用してGoogleAnalyticsの情報を取得する<準備編その2> - ナストンのまとめ
前回はGoogleプロジェクトの作成やサービスアカウントについて書きましたが、今回は【Google アナリティクス Da ...
記事へ
-
-
GoogleAnalyticsDataAPIを使用してGoogleAnalyticsの情報を取得する<準備編その1> - ナストンのまとめ
Google Analyticsのデータを取得しようとして調べてみると【Google Analytics Reporti ...
記事へ
ライブラリのインストール
【Google アナリティクス Data API】を使用できるようにC#プロジェクトにライブラリを追加します
注意点としてはVisual StudioのNugetパッケージ管理からのインストールだとバージョンが古いものとなるので
パッケージマネージャーコンソールからコマンドを使用する方が良いです
-
-
Google Analytics API のクイックスタート | Google for Developers
Google Analytics Data API デベロッパー向けクイックスタート チュートリアル。
サイトへ
パッケージマネージャーコンソールは『ツール』>『NuGetパッケージマネージャー』>『パッケージマネージャーコンソール』で起動できます

コンソールが起動後、以下のコマンドを実施するとライブラリが追加されます
NuGet\Install-Package Google.Analytics.Data.V1Beta
認証
GoogleAnalyticsDataAPIを呼び出すために認証が必要となりますが、前々回の記事の際に用意したJSONファイルを使用します
JSONファイルをプロジェクトフォルダ配下に配置して『出力ディレクトリにコピー』を『常にコピーする』に変更します

using Google.Analytics.Data.V1Beta;
using Google.Apis.Auth.OAuth2;
string jsonPath= "前々回の記事で用意したJSONファイル名";
// サービスアカウントの認証情報を読み込む
GoogleCredential credential = GoogleCredential.FromFile(jsonPath);
// クライアントを初期化
BetaAnalyticsDataClient client = new BetaAnalyticsDataClientBuilder
{
Credential = credential
}.Build();
実際にAPIを呼び出す
では実際にAPIを呼び出してみます
screenPageViewsを取得
まずは、指定した期間ないの日にちごとのページ閲覧数を表示します
string propertyId = "前々回の記事で取得したプロパティID";
// リクエストを構築
RunReportRequest request = new RunReportRequest
{
Property = $"properties/{propertyId}", // プロパティIDを指定 (GA4のプロパティID)
Dimensions = { new Dimension { Name = "date" } },
Metrics = { new Metric { Name = "screenPageViews" } },
DateRanges = { new DateRange { StartDate = "2024-04-01", EndDate = "2025-03-31" } },
};
// レポートを実行
RunReportResponse response = client.RunReport(request);
// 結果を出力
foreach (var row in response.Rows)
{
Console.WriteLine($"{row.DimensionValues[0].Value}: {row.MetricValues[0].Value}");
}
国、地域、都市別のアクセスユーザー
次にGoogleアナリティクス上の『アクティブユーザー(国)』項目を取得します
以下は、指定した期間内の国、地域、都市別にアクセスユーザーを出力します
// リクエストを構築
RunReportRequest request = new RunReportRequest
{
Property = $"properties/{propertyId}", // プロパティIDを指定 (GA4のプロパティID)
Dimensions =
{
new Dimension { Name = "country" },
new Dimension { Name = "region" },
new Dimension { Name = "city" }
},
Metrics = { new Metric { Name = "activeUsers" } },
DateRanges = { new DateRange { StartDate = "2024-04-01", EndDate = "2025-03-31" } },
};
// レポートを実行
RunReportResponse response = client.RunReport(request);
// 結果を出力
foreach (var row in response.Rows)
{
Console.WriteLine($"{row.DimensionValues[0].Value}, {row.DimensionValues[1].Value}, {row.DimensionValues[2].Value}: {row.MetricValues[0].Value}");
}
セッションの種別
続いてGoogleアナリティクス上の『セッション(セッションのメインのチャネルグループ(デフォルトチャネルグループ))』項目を取得します
以下は、指定した期間内のOrganic Seatch、Direct、Referral、Organic Social、Unassigned別にセッション数が出力されます
// リクエストを構築
RunReportRequest request = new RunReportRequest
{
Property = $"properties/{propertyId}", // プロパティIDを指定 (GA4のプロパティID)
Dimensions =
{
new Dimension { Name = "sessionDefaultChannelGroup" }
},
Metrics =
{
new Metric { Name = "sessions" } // セッション数を取得
},
DateRanges = { new DateRange { StartDate = "2024-04-01", EndDate = "2025-03-31" } }, // 日付範囲を指定
};
// レポートを実行
RunReportResponse response = client.RunReport(request);
// 結果を出力
foreach (var row in response.Rows)
{
Console.WriteLine($"{row.DimensionValues[0].Value}: {row.MetricValues[0].Value}");
}
表示回数
最後にGoogleアナリティクス上の『表示回数(ページ タイトルとスクリーン クラス)』項目を取得します
以下は、指定した期間内のページタイトルと表示回数およびページURLを出力しています
// リクエストを構築
RunReportRequest request = new RunReportRequest
{
Property = $"properties/{propertyId}", // プロパティIDを指定 (GA4のプロパティID)
Dimensions =
{
new Dimension { Name = "pageTitle" }, // ページタイトル
new Dimension { Name = "unifiedScreenClass" }, // スクリーンクラス
new Dimension { Name = "pagePath" } // ページパス
},
Metrics =
{
new Metric { Name = "screenPageViews" } // 表示回数
},
DateRanges =
{
new DateRange { StartDate = "2024-04-01", EndDate = "2025-03-31" } // 日付範囲
},
OrderBys =
{
new OrderBy
{
Metric = new OrderBy.Types.MetricOrderBy { MetricName = "screenPageViews" },
Desc = true // 表示回数で降順ソート
}
},
Limit = 10 // 上位10件を取得
};
// レポートを実行
RunReportResponse response = client.RunReport(request);
// 結果を出力
foreach (var row in response.Rows)
{
Console.WriteLine($"Page Title: {row.DimensionValues[0].Value}, Screen Class: {row.DimensionValues[1].Value}, Page URL: {row.DimensionValues[2].Value}, Page Views: {row.MetricValues[0].Value}");
}
最後に
実装までに色々と時間がかかりましたが、これでGoogleアナリティクス情報を取得できるようになりました
他のデータの取得については以下の公式サイトのパラメータを参照してみてください
-
-
API のディメンションと指標 | Google Analytics | Google for Developers
サイトへ
また、今回の記事内で使用したコードについてもGitHubにアップしていますので参考にしてみてください
-
-
BlogSampleCodeProjects/GoolgeRepo at main · nasuton/BlogSampleCodeProjects · GitHub
Project for sample code used in the blog.(Blogで記載しているサンプルコード ...
GitHubへ
会社紹介
私が所属しているアドバンスド・ソリューション株式会社(以下、ADS)は一緒に働く仲間を募集しています
会社概要
「技術」×「知恵」=顧客課題の解決・新しい価値の創造
この方程式の実現はADSが大切にしている考えで、技術を磨き続けるgeekさと、顧客を思うloveがあってこそ実現できる世界観だと思っています
この『love & geek』の精神さえあれば、得意不得意はno problem!
技術はピカイチだけど顧客折衝はちょっと苦手。OKです。技術はまだ未熟だけど顧客と知恵を出し合って要件定義するのは大好き。OKです
凸凹な社員の集まり、色んなカラーや柄の個性が集まっているからこそ、常に新しいソリューションが生まれています
ミッション
私たちは、テクノロジーを活用し、業務や事業の生産性向上と企業進化を支援します
-
-
アドバンスド・ソリューション株式会社|ADS Co., Ltd.
Microsoft 365/SharePoint/Power Platform/Azure による DX コンサル・シス ...
サイトへ移動