Google Analytics Data API を用いてGA4プロパティに認証しデータを取得するコードを紹介します。
Google Cloud Cosole にアクセスして、Google Analytics Data APIを有効にする必要があります。手順についてはこちらの記事を参照してください。
Google APIを利用するサービスアカウントを作成します。サービスアカウントの作成手順はこちらの記事を参照してください。
Google APIのサービスアカウントの認証用のキーを取得します。キーの作成、取得手順はこちらの記事を参照してください。今回はJSON形式のキーを取得します。
Google Analyticsの設定画面でアクセスできるユーザーに作成したサービスアカウントのユーザーを追加します。Google Analyticsにサービスアカウントを追加する手順は
こちらの記事を参照してください。
Windows Formアプリケーションを作成します。
作成したプロジェクトにGoogle Analytics Data APIライブラリをインストールします。インストール手順はこちらの記事を参照して下さい。
コードに記述する、Google Analytics v4 プロパティのIDを調べます。
Google Analytics の管理画面にアクセスし、Google Analytics V4の[プロパティ設定]画面を表示します。画面の右上に[プロパティID]の項目があります。
IDの数値をメモしておきます。プロパティIDの右側のボタンをクリックするとクリップボードにプロパティIDの値をコピーできます。
下図のフォームを作成します。
ボタンと複数行のテキストボックスを配置します。
先の手順でダウンロードした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版のライブラリを利用した場合は以下のコードになります。
下記コードを記述します。
ボタンのクリックイベントを実装します。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);
}
}