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 Google.Apis.AnalyticsReporting.v4;
using Google.Apis.AnalyticsReporting.v4.Data;
using Google.Apis.Auth.OAuth2;
using System.IO;
namespace GoogleAnalyticsUserGet
{
public partial class FormMain : Form
{
public FormMain()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
}
private void button2_Click(object sender, EventArgs e)
{
FileStream stream = new FileStream("ipentectest-0f26d0134ab7.json", FileMode.Open, FileAccess.Read);
GoogleCredential credential = GoogleCredential.FromStream(stream).CreateScoped(AnalyticsReportingService.Scope.AnalyticsReadonly);
AnalyticsReportingService.Initializer initializer = new AnalyticsReportingService.Initializer()
{
HttpClientInitializer = credential,
ApplicationName = "app"
};
AnalyticsReportingService service = new AnalyticsReportingService(initializer);
GetReportsRequest request = new GetReportsRequest();
ReportRequest report_request = new ReportRequest()
{
ViewId = "(Google Analytics のビューのID)",
Metrics = new[] { new Metric { Expression = "ga:users" } },
Dimensions = new[] { new Dimension { Name = "ga:date" } },
FiltersExpression = "ga:dimension1==dark",
DateRanges = new[] { new DateRange { StartDate = "2021-01-01", EndDate = "2021-01-15" } },
OrderBys = new[] { new OrderBy { FieldName = "ga:date", SortOrder = "DESCENDING" } }
};
request.ReportRequests = new[] { report_request };
ReportsResource.BatchGetRequest batchRequest = service.Reports.BatchGet(request);
GetReportsResponse response = batchRequest.Execute();
foreach (var x in response.Reports.First().Data.Rows) {
textBox1.Text += string.Join(", ", x.Dimensions) + " " + string.Join(", ", x.Metrics.First().Values) + "\r\n";
}
}
}
}
FileStream stream = new FileStream("ipentectest-0f26d0134ab7.json", FileMode.Open, FileAccess.Read);
GoogleCredential credential = GoogleCredential.FromStream(stream).CreateScoped(AnalyticsReportingService.Scope.AnalyticsReadonly);
AnalyticsReportingService.Initializer initializer = new AnalyticsReportingService.Initializer()
{
HttpClientInitializer = credential,
ApplicationName = "app"
};
AnalyticsReportingService service = new AnalyticsReportingService(initializer);
GetReportsRequest request = new GetReportsRequest();
/* 中略 */
request.ReportRequests = new[] { report_request };
ReportsResource.BatchGetRequest batchRequest = service.Reports.BatchGet(request);
GetReportsResponse response = batchRequest.Execute();
foreach (var x in response.Reports.First().Data.Rows) {
textBox1.Text += string.Join(", ", x.Dimensions) + " " + string.Join(", ", x.Metrics.First().Values) + "\r\n";
}
ga:dimension(インデックス番号)
を指定します。
今回はインデックス1のカスタム ディメンションでフィルタをするため、ga:dimension1
を記述します。フィルタするディメンションの値を条件式として記述します。
今回はga:dimension1==dark
の記述としているため、カカスタム ディメンション1の値が dark
であるアクセスのみをフィルタして取得します。 ReportRequest report_request = new ReportRequest()
{
ViewId = "(Google Analytics のビューのID)",
Metrics = new[] { new Metric { Expression = "ga:users" } },
Dimensions = new[] { new Dimension { Name = "ga:date" } },
FiltersExpression = "ga:dimension1==dark",
DateRanges = new[] { new DateRange { StartDate = "2021-01-01", EndDate = "2021-01-15" } },
OrderBys = new[] { new OrderBy { FieldName = "ga:date", SortOrder = "DESCENDING" } }
};