Google Analytics Data API を用いてGA4プロパティに認証しデータを取得する - C#
Google Analytics Data API を用いてGA4プロパティに認証しデータを取得するコードを紹介します。
事前準備
Google Analytics Data APIを有効にする
Google Cloud Cosole にアクセスして、Google Analytics Data APIを有効にする必要があります。手順については
こちらの記事を参照してください。
Google API のサービスアカウントを作成する
Google APIを利用するサービスアカウントを作成します。サービスアカウントの作成手順は
こちらの記事を参照してください。
Google API のサービスアカウントのキーを取得する
Google APIのサービスアカウントの認証用のキーを取得します。キーの作成、取得手順は
こちらの記事を参照してください。今回はJSON形式のキーを取得します。
Google Analytics にサービスアカウントを追加する
Google Analyticsの設定画面でアクセスできるユーザーに作成したサービスアカウントのユーザーを追加します。Google Analyticsにサービスアカウントを追加する手順は
こちらの記事を参照してください。
プログラム
Windows Formアプリケーションを作成します。
事前準備: Google Analytics Data API ライブラリのインストール
作成したプロジェクトにGoogle Analytics Data APIライブラリをインストールします。インストール手順は
こちらの記事を参照して下さい。
事前準備: Google Analytics v4 プロパティのIDの確認
コードに記述する、Google Analytics v4 プロパティのIDを調べます。
Google Analytics の管理画面にアクセスし、Google Analytics V4の[プロパティ設定]画面を表示します。画面の右上に[プロパティID]の項目があります。
IDの数値をメモしておきます。プロパティIDの右側のボタンをクリックするとクリップボードにプロパティIDの値をコピーできます。
UI
下図のフォームを作成します。
ボタンと複数行のテキストボックスを配置します。
キーファイル
先の手順でダウンロードしたGoogle APIのサービスアカウントのキーファイルをソリューションエクスプローラーのプロジェクトディレクトリに配置します。
また、ビルド先にキーのファイルが出力されるように、ファイルのプロパティの[出力ディレクトリにコピー]の値を "常にコピーする" に設定します。
コード
下記コードを記述します。
ボタンのクリックイベントを実装します。PropertyId に代入する値は、先に確認した、Google Analytics V4プロパティのIDを設定します。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Google.Analytics.Data.V1Beta;
using Google.Api.Gax;
namespace QuickStart
{
public partial class FormMain : Form
{
public FormMain()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
}
private void button1_Click(object sender, EventArgs e)
{
BetaAnalyticsDataClient aadc;
BetaAnalyticsDataClientBuilder aadcb = new BetaAnalyticsDataClientBuilder();
aadcb.CredentialsPath = "ipentectest-47441b548b72.json";
aadc = aadcb.Build();
RunReportRequest request = new RunReportRequest();
request.Property = "properties/(Google Analytics v4 のプロパティID)";
Dimension dim = new Dimension();
dim.Name = "Date";
request.Dimensions.Add(dim);
Metric met = new Metric();
met.Name = "screenPageViews";
request.Metrics.Add(met);
DateRange dr = new DateRange();
dr.StartDate = "2021-01-01";
dr.EndDate = "2021-01-07";
request.DateRanges.Add(dr);
RunReportResponse response = aadc.RunReport(request);
foreach (Row r in response.Rows) {
textBox1.Text += string.Format("{0}, {1}\r\n", r.DimensionValues[0].Value, r.MetricValues[0].Value);
}
}
}
}
解説
BetaAnalyticsDataClient
オブジェクトを作成します。
BetaAnalyticsDataClientBuilder
オブジェクトを作成し、作成した BetaAnalyticsDataClientBuilder オブジェクトの
CredentialsPath
に
サービスアカウントのキーファイルのパスを設定します。設定後、BetaAnalyticsDataClientBuilder オブジェクトの
Build()
メソッドを呼び出すと、
BetaAnalyticsDataClient オブジェクトを作成できます。
BetaAnalyticsDataClient aadc;
BetaAnalyticsDataClientBuilder aadcb = new BetaAnalyticsDataClientBuilder();
aadcb.CredentialsPath = "ipentectest-47441b548b72.json";
aadc = aadcb.Build();
RunReportRequest オブジェクトを作成し、リクエストの情報を作成します。
RunReportRequest オブジェクトの Property プロパティに取得するGoogle AnalyticsプロパティのIDを設定します。IDの形式は
properties/(Google Analytics v4 のプロパティID)
の文字列の形式になります。(例として "properties/123456789" といった文字列になります。)
Dimensions プロパティに取得するDimension を設定します。Metrics プロパティに取得するMetric、DateRanges プロパティにデータを取得する日付範囲を設定します。
今回のコードでは Dimension に "Date"、Metric に "screenPageViews"、 DateRangeの範囲は 2021年1月1日から、2021年1月7日とします。
日別のページビュー数を取得するリクエストになります。
RunReportRequest request = new RunReportRequest();
request.Property = "properties/(Google Analytics v4 のプロパティID)";
Dimension dim = new Dimension();
dim.Name = "Date";
request.Dimensions.Add(dim);
Metric met = new Metric();
met.Name = "screenPageViews";
request.Metrics.Add(met);
DateRange dr = new DateRange();
dr.StartDate = "2021-01-01";
dr.EndDate = "2021-01-07";
request.DateRanges.Add(dr);
AlphaAnalyticsDataClient オブジェクトの RunReport メソッドを呼び出します。第一引数に作成したRunReportRequest を与えます。
リクエストに設定した情報が取得され、結果が、RunReportResponse オブジェクトに戻ります。
RunReportResponse response = aadc.RunReport(request);
Google Analytics から取得した情報がRunReportの戻り値の RunReportResponse オブジェクトに格納されています。
Rows に各行の結果が代入されていますので、foreach でループ処理を実行し、それぞれの値をテキストボックスに表示します。
foreach (Row r in response.Rows) {
textBox1.Text += string.Format("{0}, {1}\r\n", r.DimensionValues[0].Value, r.MetricValues[0].Value);
}
補足:オブジェクト初期化子を利用した書式
BetaAnalyticsDataClient
オブジェクトの作成や、
RunReportRequest
オブジェクトの作成時にオブジェクト初期化子を利用するとコードをシンプルに記述できます。
オブジェクト初期化子を利用したコードは以下になります。
private void button2_Click(object sender, EventArgs e)
{
BetaAnalyticsDataClient aadc = new BetaAnalyticsDataClientBuilder()
{
CredentialsPath = "ipentectest-47441b548b72.json"
}.Build();
RunReportRequest request = new RunReportRequest()
{
Property = "properties/(Google Analytics v4 のプロパティID)",
Dimensions = { new Dimension() { Name = "Date" } },
Metrics = { new Metric() { Name = "screenPageViews" } },
DateRanges = { new DateRange() { StartDate = "2021-01-01", EndDate = "2021-01-07" } }
};
RunReportResponse response = aadc.RunReport(request);
foreach (Row r in response.Rows) {
textBox1.Text += string.Format("{0}, {1}\r\n", r.DimensionValues[0].Value, r.MetricValues[0].Value);
}
}
実行結果
プロジェクトを実行します。下図のウィンドウが表示されます。
[button1]をクリックします。
下図の結果(一例)がテキストボックスに表示されます。
Google Analytics v4プロパティのページビューの数値が取得できます。
参考: Google Analytics Data API Alpha版のコード
Google Analytics Data APIのAlpha版のライブラリを利用した場合は以下のコードになります。
コード
下記コードを記述します。
ボタンのクリックイベントを実装します。PropertyId に代入する値は、先に確認した、Google Analytics V4プロパティのIDを設定します。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Google.Analytics.Data.V1Alpha;
using Google.Api.Gax;
namespace QuickStart
{
public partial class FormMain : Form
{
public FormMain()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
}
private void button1_Click(object sender, EventArgs e)
{
AlphaAnalyticsDataClient aadc;
AlphaAnalyticsDataClientBuilder aadcb = new AlphaAnalyticsDataClientBuilder();
aadcb.CredentialsPath = "ipentectest-47441b548b72.json";
aadc = aadcb.Build();
RunReportRequest request = new RunReportRequest();
request.Entity = new Entity();
request.Entity.PropertyId = "(Google Analytics v4 プロパティのID)";
//request.Entity.PropertyId = "21310"; //具体例
Dimension dim = new Dimension();
dim.Name = "Date";
request.Dimensions.Add(dim);
Metric met = new Metric();
met.Name = "screenPageViews";
request.Metrics.Add(met);
DateRange dr = new DateRange();
dr.StartDate = "2021-01-01";
dr.EndDate = "2021-01-07";
request.DateRanges.Add(dr);
RunReportResponse response = aadc.RunReport(request);
foreach (Row r in response.Rows) {
textBox1.Text += string.Format("{0}, {1}\r\n", r.DimensionValues[0].Value, r.MetricValues[0].Value);
}
}
}
}
解説
AlphaAnalyticsDataClient
オブジェクトを作成します。
AlphaAnalyticsDataClientBuilder
オブジェクトを作成し、作成した AlphaAnalyticsDataClientBuilder オブジェクトの
CredentialsPath
に
サービスアカウントのキーファイルのパスを設定します。設定後、AlphaAnalyticsDataClientBuilder オブジェクトの
Build()
メソッドを呼び出すと、
AlphaAnalyticsDataClientオブジェクトを作成できます。
AlphaAnalyticsDataClient aadc;
AlphaAnalyticsDataClientBuilder aadcb = new AlphaAnalyticsDataClientBuilder();
aadcb.CredentialsPath = "ipentectest-47441b548b72.json";
aadc = aadcb.Build();
RunReportRequest オブジェクトを作成し、リクエストの情報を作成します。
RunReportRequest オブジェクトの Dimensions プロパティに取得するDimension を設定します。Metrics プロパティに取得するMetric、DateRanges プロパティにデータを取得する日付範囲を設定します。
今回のコードでは Dimension に "Date"、Metric に "screenPageViews"、 DateRangeの範囲は 2021年1月1日から、2021年1月7日とします。
日別のページビュー数を取得するリクエストになります。
RunReportRequest request = new RunReportRequest();
request.Entity = new Entity();
request.Entity.PropertyId = "(Google Analytics v4 プロパティのID)";
Dimension dim = new Dimension();
dim.Name = "Date";
request.Dimensions.Add(dim);
Metric met = new Metric();
met.Name = "screenPageViews";
request.Metrics.Add(met);
DateRange dr = new DateRange();
dr.StartDate = "2021-01-01";
dr.EndDate = "2021-01-07";
request.DateRanges.Add(dr);
AlphaAnalyticsDataClient オブジェクトの RunReport メソッドを呼び出します。第一引数に作成したRunReportRequest を与えます。
リクエストに設定した情報が取得され、結果が、RunReportResponse オブジェクトに戻ります。
RunReportResponse response = aadc.RunReport(request);
Google Analytics から取得した情報がRunReportの戻り値の RunReportResponse オブジェクトに格納されています。
Rows に各行の結果が代入されていますので、foreach でループ処理を実行し、それぞれの値をテキストボックスに表示します。
foreach (Row r in response.Rows) {
textBox1.Text += string.Format("{0}, {1}\r\n", r.DimensionValues[0].Value, r.MetricValues[0].Value);
}
補足:オブジェクト初期化子を利用した書式
AlphaAnalyticsDataClient
オブジェクトの作成や、
RunReportRequest
オブジェクトの作成時にオブジェクト初期化子を利用するとコードをシンプルに記述できます。
オブジェクト初期化子を利用したコードは以下になります。
private void button2_Click(object sender, EventArgs e)
{
AlphaAnalyticsDataClient aadc = new AlphaAnalyticsDataClientBuilder()
{
CredentialsPath = "ipentectest-47441b548b72.json"
}.Build();
RunReportRequest request = new RunReportRequest()
{
Entity = new Entity() { PropertyId = "(Google Analytics v4 プロパティのID)" },
Dimensions = { new Dimension() { Name = "Date" } },
Metrics = { new Metric() { Name = "screenPageViews" } },
DateRanges = { new DateRange() { StartDate = "2021-01-01", EndDate = "2021-01-07" } }
};
RunReportResponse response = aadc.RunReport(request);
foreach (Row r in response.Rows) {
textBox1.Text += string.Format("{0}, {1}\r\n", r.DimensionValues[0].Value, r.MetricValues[0].Value);
}
}
著者
iPentecのメインプログラマー
C#, ASP.NET の開発がメイン、少し前まではDelphiを愛用