Google Universal Analytics はサービスを終了したため、現在はこの記事で紹介しているコードは動作しません。
新しい Google Analytics 4 (GA4) プロパティを利用する必要があります。
GA4プロパティからのデータ取得はこちらの記事を参照してください。
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 System.Security.Cryptography.X509Certificates;
using Google.Apis.Auth.OAuth2;
using Google.Apis.Analytics.v3;
using Google.Apis.Analytics.v3.Data;
using Google.Apis.Services;
namespace GoogleAnalyticsTotalPVGet
{
public partial class FormMain : Form
{
public FormMain()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
X509Certificate2 certificate = new X509Certificate2(@"apikey.p12", "notasecret", X509KeyStorageFlags.Exportable);
string serviceAccountEmail = "012345678901-abcdefghijklmnopqrstuvwxyz012345@developer.gserviceaccount.com";
ServiceAccountCredential credential = new ServiceAccountCredential(new ServiceAccountCredential.Initializer(serviceAccountEmail)
{
Scopes = new[] { AnalyticsService.Scope.Analytics, AnalyticsService.Scope.AnalyticsReadonly }
}
.FromCertificate(certificate));
AnalyticsService service = new AnalyticsService(new BaseClientService.Initializer
{
HttpClientInitializer = credential,
ApplicationName = "sample app",
});
string enddate = DateTime.Now.AddDays(-1).ToString("yyyy-MM-dd");
string startdate = DateTime.Now.AddDays(-30).ToString("yyyy-MM-dd");
DataResource.GaResource.GetRequest request = service.Data.Ga.Get("ga:00000000", startdate, enddate, "ga:pageviews");
request.Dimensions = "ga:date";
GaData data = request.Execute();// Fetch();
for (int i = 0; i < data.Rows.Count; i++) {
DateTime dt = System.DateTime.ParseExact(data.Rows[i][0], "yyyyMMdd",
System.Globalization.DateTimeFormatInfo.InvariantInfo,
System.Globalization.DateTimeStyles.NoCurrentDateDefault);
textBox1.Text += string.Format("{0}\t{1:d}\r\n", dt.ToString("yyyy-MM-dd"), Convert.ToInt32(data.Rows[i][1]));
}
}
}
}
X509Certificate2 certificate = new X509Certificate2(@"apikey.p12", "notasecret", X509KeyStorageFlags.Exportable);
string serviceAccountEmail = "012345678901-abcdefghijklmnopqrstuvwxyz012345@developer.gserviceaccount.com";
ServiceAccountCredential credential = new ServiceAccountCredential(new ServiceAccountCredential.Initializer(serviceAccountEmail)
{
Scopes = new[] { AnalyticsService.Scope.Analytics, AnalyticsService.Scope.AnalyticsReadonly }
}
.FromCertificate(certificate));
AnalyticsService service = new AnalyticsService(new BaseClientService.Initializer
{
HttpClientInitializer = credential,
ApplicationName = "sample app",
});
上記のコード(認証部分、サービスオブジェクトの生成)に関しては、こちらのページを参照して下さい。 string enddate = DateTime.Now.AddDays(-1).ToString("yyyy-MM-dd");
string startdate = DateTime.Now.AddDays(-30).ToString("yyyy-MM-dd");
DataResource.GaResource.GetRequest request = service.Data.Ga.Get("ga:00000000", startdate, enddate, "ga:pageviews");
request.Dimensions = "ga:date";
GaData data = request.Execute();// Fetch();
for (int i = 0; i < data.Rows.Count; i++) {
DateTime dt = System.DateTime.ParseExact(data.Rows[i][0], "yyyyMMdd",
System.Globalization.DateTimeFormatInfo.InvariantInfo,
System.Globalization.DateTimeStyles.NoCurrentDateDefault);
textBox1.Text += string.Format("{0}\t{1:d}\r\n", dt.ToString("yyyy-MM-dd"), Convert.ToInt32(data.Rows[i][1]));
}
上記コードがAnalyticsから情報を取得するコードです。今回は、開始日が30日前、終了日を前日としています。AnalyticsServiceのData.Ga.Get()メソッドのメトリクスには"ga:pageviews"を指定し、ページビュー数を取得する設定とします。また、DataResource.GaResource.GetRequestオブジェクトのDimensionsプロパティに、"ga:date"を指定し、日別の情報として取得します。情報の取得はDataResource.GaResource.GetRequestオブジェクトのExecute()メソッドの呼び出しにより実行されます。