Mezzanine の
Google Analytics V4 API
で
言語は
参考サイト
登録手順の
説明 JAVA API の
サンプル v3、
v4 の 違い Dimensionsと、
Metrics の 説明 BatchGetの
リファレンス
v3, v4 APIの 違いに ついて
こちら
ざっくり
v4 の
リリース以降に、 google analytics に 追加された 機能に 対する api は v4 側に 追加される APIが
Management API
、Metadata API
から独立した 独立したので、 単独使用する 際は、 VIEW_IDの 指定が 必要 アナリティクス Reporting API V4 は、
V3 の 他の API (Management API や Metadata API など ) から 独立している ため、
別個にクライアントライブラリが 必要です。
スペースに制約が ある アプリケーション (モバイル アプリケーション)を 作成する 場合は、 この 点が API V3 を 使用する 際の 考慮事項に なります。 sort 指定方法等 API の
パラメータが 変更されている。 (Java API の IF には 変更は ないが、 指定できる 文字列が 変わっている )
APIを 使う前に やって おくこと
初心者でも
以下、
1. Analytics API は 2つあり、 V4 が 付いているのが V4に なります。
画像のAnalytics API
が
Analytics Reporting API V4
が
2. サービスキーの 種類は 使用状況に よって 異なる。
API の
今回は、その<wbr>他の<wbr>UI (Windows、<wbr>CLIツール等)
を
実装
1. V4 API の ライブラリを 依存関係に 追加する。
Maven リポジトリに
以下指定方法です。
- gradle
compile group: 'com.google.apis', name: 'google-api-services-analyticsreporting', version: 'v4-rev11-1.22.0' // https://mvnrepository.com/artifact/com.google.api-client/google-api-client-gson compile group: 'com.google.api-client', name: 'google-api-client-gson', version: '1.22.0'
- maven
<!-- https://mvnrepository.com/artifact/com.google.apis/google-api-services-analyticsreporting --> <dependency> <groupId>com.google.apis</groupId> <artifactId>google-api-services-analyticsreporting</artifactId> <version>v4-rev4-1.21.0</version> </dependency> <!-- https://mvnrepository.com/artifact/com.google.api-client/google-api-client-gson --> <dependency> <groupId>com.google.api-client</groupId> <artifactId>google-api-client-gson</artifactId> <version>1.22.0</version> </dependency>
2. HelloAnalytics.java を コピー
はじめての
HelloAnalytics.java
を
以下、
import文の 記載
sample code 上 以下の
import com.google.analyticsreporting.v4.AnalyticsreportingScopes; import com.google.analyticsreporting.v4.Analyticsreporting; import com.google.analyticsreporting.v4.model.ColumnHeader; import com.google.analyticsreporting.v4.model.DateRange; import com.google.analyticsreporting.v4.model.DateRangeValues; import com.google.analyticsreporting.v4.model.Dimension; import com.google.analyticsreporting.v4.model.GetReportsRequest; import com.google.analyticsreporting.v4.model.GetReportsResponse; import com.google.analyticsreporting.v4.model.Metric; import com.google.analyticsreporting.v4.model.MetricHeaderEntry; import com.google.analyticsreporting.v4.model.Report; import com.google.analyticsreporting.v4.model.ReportRequest; import com.google.analyticsreporting.v4.model.ReportRow;
v3
からAnalyticsreporting
> AnalyticsReporting
AnalyticsreportingScopes
> AnalyticsReportingScopes
import com.google.api.services.analyticsreporting.v4.AnalyticsReportingScopes; import com.google.api.services.analyticsreporting.v4.AnalyticsReporting; import com.google.api.services.analyticsreporting.v4.model.ColumnHeader; import com.google.api.services.analyticsreporting.v4.model.DateRange; import com.google.api.services.analyticsreporting.v4.model.DateRangeValues; import com.google.api.services.analyticsreporting.v4.model.Dimension; import com.google.api.services.analyticsreporting.v4.model.GetReportsRequest; import com.google.api.services.analyticsreporting.v4.model.GetReportsResponse; import com.google.api.services.analyticsreporting.v4.model.Metric; import com.google.api.services.analyticsreporting.v4.model.MetricHeaderEntry; import com.google.api.services.analyticsreporting.v4.model.Report; import com.google.api.services.analyticsreporting.v4.model.ReportRequest; import com.google.api.services.analyticsreporting.v4.model.ReportRow;
認証情報の 作成方を 変更
P12 キー ではなく、
GoogleCredential.fromStream(new FileInputStream(KEY_FILE_LOCATION))
でKEY_FILE_LOCATION
に、
JSONキーの
/** * Initializes an authorized Analytics Reporting service object. * * @return The analytics reporting service object. * @throws IOException * @throws GeneralSecurityException */ private AnalyticsReporting initializeAnalyticsReporting() throws GeneralSecurityException, IOException { HttpTransport httpTransport = GoogleNetHttpTransport.newTrustedTransport(); GoogleCredential credential = GoogleCredential.fromStream(new FileInputStream(KEY_FILE_LOCATION)) .createScoped(AnalyticsReportingScopes.all()); // Construct the Analytics Reporting service object. return new AnalyticsReporting.Builder(httpTransport, JSON_FACTORY, credential) .setApplicationName(APP_NAME).build(); }
Metrics の Value値の 取得方法の 変更
v3、
サンプルコードの
Value値が
- 変更前
for (int j = 0; j < metrics.size(); j++) { System.out.print("Date Range (" + j + "): "); DateRangeValues values = metrics.get(j); for (int k = 0; k < values.size() && k < metricHeaders.size(); k++) { System.out.println(metricHeaders.get(k).getName() + ": " + values.get(k)); } }
- 変更後
for (DateRangeValues metric : metrics) { List<String> values = metric.getValues(); for (int j = 0; j < values.size() && j < metricHeaders.size(); j++) { println("Metrics:" + metricHeaders.get(j).getName() + ": " + values.get(j)); } }
本編 URLごとの PageViewを 取得する。
以下、
- getReportDimensionPagepathsMetrixPageviews_SessionsOrderByPageviewsDesc
/** * getReportDimensionPagepathsMetrixPageviews_SessionsOrderByPageviewsDesc * * @throws GeneralSecurityException * @throws IOException */ public void getReportDimensionPagepathsMetrixPageviews_SessionsOrderByPageviewsDesc() throws GeneralSecurityException, IOException { AnalyticsReporting service = initializeAnalyticsReporting(); // -------------------------------------------------- // Create the DateRange object. // ----------------------------- DateRange dateRange = new DateRange(); dateRange.setStartDate("2016-09-01"); dateRange.setEndDate("2016-09-29"); List<DateRange> dateRanges = Arrays.asList(dateRange); // -------------------------------------------------- // Create the Metrics object. // ----------------------------- Metric pageviews = new Metric() .setExpression("ga:pageviews") .setAlias("PageView"); // Create the Metrics object. Metric sessions = new Metric() .setExpression("ga:sessions") .setAlias("Sessions"); List<Metric> metrics = Arrays.asList(sessions, pageviews); // -------------------------------------------------- // Create the Dimensions object. // ----------------------------- Dimension pagePath = new Dimension().setName("ga:pagePath"); List<Dimension> dimensions = Arrays.asList(pagePath); // -------------------------------------------------- // Create OrderBy object // ------------------------------ OrderBy sort = new OrderBy().setFieldName("ga:pageviews").setSortOrder("DESCENDING"); List<OrderBy> sortOrders = Arrays.asList(sort); // -------------------------------------------------- // Create the ReportRequest object. // ------------------------------ GetReportsResponse response = getReportsResponse(service, dateRanges, metrics, dimensions, sortOrders); // print response printResponse(response); }
ちょっと 解説
- Metrics には、
pageviews と、 sessions を 指定
横軸には、pageviews と、 sessions を 指定しています。 以下が 該当箇所に なります。
// -------------------------------------------------- // Create the Metrics object. // ----------------------------- Metric pageviews = new Metric() .setExpression("ga:pageviews") .setAlias("PageView"); // Create the Metrics object. Metric sessions = new Metric() .setExpression("ga:sessions") .setAlias("Sessions"); List<Metric> metrics = Arrays.asList(sessions, pageviews);
- Dimensions には、
pagePath を 指定
pageviews数 と、sessions数 を pagePath(URL) で GroupBy したいので、
DimensionsにpagePathを 指定します。
以下が該当箇所の 記述に なります。
// -------------------------------------------------- // Create the Dimensions object. // ----------------------------- Dimension pagePath = new Dimension().setName("ga:pagePath"); List<Dimension> dimensions = Arrays.asList(pagePath);
- PageView の
ランキングを 出したいので、 PageView で OrderByDesc pageviews数 の ランキングを 出力するので、
結果をpageviewsで OrderByDescします。
以下が該当箇所の 記述に なります。
// -------------------------------------------------- // Create OrderBy object // ------------------------------ OrderBy sort = new OrderBy().setFieldName("ga:pageviews").setSortOrder("DESCENDING"); List<OrderBy> sortOrders = Arrays.asList(sort);
プログラム一式
Githubに
発生した エラーと その 対処方法
400 Bad Request invalid_grant
複数jsonキーを
消した
キー指定を
com.google.api.client.auth.oauth2.TokenResponseException: 400 Bad Request { "error" : "invalid_grant", "error_description" : "Invalid JWT Signature." } at com.google.api.client.auth.oauth2.TokenResponseException.from(TokenResponseException.java:105) at com.google.api.client.auth.oauth2.TokenRequest.executeUnparsed(TokenRequest.java:287)
400 Bad Request Invalid value at ‘report_requests[0].order_bys[0].sort_order’
SortOrder の
v3 とは
SORT_ORDER_UNSPECIFIED
ASCENDING
DESCENDING
com.google.api.client.googleapis.json.GoogleJsonResponseException: 400 Bad Request { "code": 400, "errors": [ { "domain": "global", "message": "Invalid value at 'report_requests[0].order_bys[0].sort_order' (TYPE_ENUM), \"ga:pageviews\"", "reason": "badRequest" } ], "message": "Invalid value at 'report_requests[0].order_bys[0].sort_order' (TYPE_ENUM), \"ga:pageviews\"", "status": "INVALID_ARGUMENT" } at com.google.api.client.googleapis.json.GoogleJsonResponseException.from(GoogleJsonResponseException.java:146) at com.google.api.client.googleapis.services.json.AbstractGoogleJsonClientRequest.newExceptionOnError(AbstractGoogleJsonClientRequest.java:113) at com.google.api.client.googleapis.services.json.AbstractGoogleJsonClientRequest.newExceptionOnError(AbstractGoogleJsonClientRequest.java:40)
400 Bad Request “status”: “INVALID_ARGUMENT”
ga:pageview に
数値項目には
com.google.api.client.googleapis.json.GoogleJsonResponseException: 400 Bad Request { "code": 400, "errors": [ { "domain": "global", "message": "Invalid value 'ga:pageviews=~^/blog.*' for filters parameter.", "reason": "badRequest" } ], "message": "Invalid value 'ga:pageviews=~^/blog.*' for filters parameter.", "status": "INVALID_ARGUMENT" } at com.google.api.client.googleapis.json.GoogleJsonResponseException.from(GoogleJsonResponseException.java:146)
Metrix、 Dimension、 Orderby に 指定できる クエリに ついて
Dimensions & Metrics Explorer | アナリティクス Reporting API V4 | Google Developers
にga:xxxxx
が
大量に
まず
以上です。
コメント