Googleアナリティクス API利用の準備(2)
ライブラリとサンプルコードの準備
プログラムからAPIを利用するためのライブラリを準備します。
各種プログラム言語(Java、PHP、Python、.NET、Perl、Ruby)でクライアントライブラリが準備されています。
本稿では企業のデータ分析環境構築でも利用されることの多いJavaを用います。Javaのライブラリは「Google API Client Libraries」からダウンロードしてください。
ファイルを展開してlibsディレクトリ内のすべてのJARファイルをクラスパスに追加します。
export CLASS_PATH=.:./analyticsreporting/*:./analyticsreporting/libs/*
下記のサンプルコードは指定したビューの過去30日間のセッション数が出力されます。
注意
コードを正常に実行するには、Googleアナリティクスのプロパティとビューが必要です
また、先ほど作成した認証用キーファイル(google.p12)はこのサンプルコードと同じディレクトリに置いてください。
まず定数とmainメソッドを見ていきます。
private static final String APPLICATION_NAME = "Hello Analytics Reporting"; private static final JsonFactory JSON_FACTORY = GsonFactory.getDefaultInstance(); private static final String KEY_FILE_LOCATION = "./google.p12"; //(1) private static final String SERVICE_ACCOUNT_EMAIL = "ga-api-account@ga-api-article.iam.gserviceaccount.com"; //(2) private static final String VIEW_ID = "123456789"; //(3) public static void main(String[] args) { //(4) try { AnalyticsReporting service = initializeAnalyticsReporting(); GetReportsResponse response = getReport(service); printResponse(response); } catch (Exception e) { e.printStackTrace(); } }
定数として指定する下記の(1)~(3)は先述のAPI利用の準備で取得したものを利用します。
(1)認証ファイル(p12ファイル)の指定
認証ファイルの場所を指定します。ここではクラスファイルと同じ場所にありますが、別のディレクトリにある場合はそのパスを含めて記述してください。
(2)サービスアカウントの指定
Google Developer Consoleで設定したサービスアカウントのメールアドレスを指定します。
(3)ビューIDの指定
値を取得する対象となるGoogleアナリティクスのビューIDを指定します。
(4)mainメソッド
このサンプルコードを実行するため、各種メソッドを順番に呼び出します。
大きな流れとしては下記になります。
- APIへの認証を通し、レポート用のオブジェクトを準備する
- レポートを定義し、データを取得する
- 取得したデータを確認する
詳しくはリスト2でそれぞれのメソッドの中身を確認していきます。
//AnalyticsReportingオブジェクトを初期化する private static AnalyticsReporting initializeAnalyticsReporting() throws GeneralSecurityException, IOException { HttpTransport httpTransport = GoogleNetHttpTransport.newTrustedTransport(); GoogleCredential credential = new GoogleCredential.Builder() .setTransport(httpTransport) .setJsonFactory(JSON_FACTORY) .setServiceAccountId(SERVICE_ACCOUNT_EMAIL) .setServiceAccountPrivateKeyFromP12File(new File(KEY_FILE_LOCATION)) .setServiceAccountScopes(AnalyticsReportingScopes.all()) .build(); //(1) return new AnalyticsReporting.Builder(httpTransport, JSON_FACTORY, credential) .setApplicationName(APPLICATION_NAME).build(); //(2) } //APIでレポートを呼び出すためのメソッド private static GetReportsResponse getReport(AnalyticsReporting service) throws IOException { DateRange dateRange = new DateRange(); //(3) dateRange.setStartDate("31DaysAgo"); dateRange.setEndDate("yesterday"); Metric sessions = new Metric().setExpression("ga:sessions").setAlias("sessions"); //(4) ReportRequest request = new ReportRequest() .setViewId(VIEW_ID) .setDateRanges(Arrays.asList(dateRange)) .setMetrics(Arrays.asList(sessions)); //(5) ArrayList<ReportRequest> requests = new ArrayList<ReportRequest>(); requests.add(request); GetReportsRequest getReport = new GetReportsRequest().setReportRequests(requests); GetReportsResponse response = service.reports().batchGet(getReport).execute(); return response; } //APIからの取得したデータを確認する private static void printResponse(GetReportsResponse response) { for (Report report: response.getReports()) { ColumnHeader header = report.getColumnHeader(); //(6) List<MetricHeaderEntry> metricHeaders = header.getMetricHeader().getMetricHeaderEntries(); List<ReportRow> rows = report.getData().getRows(); for (ReportRow row: rows) { List<DateRangeValues> metrics = row.getMetrics(); for (int j = 0; j < metrics.size(); j++) { DateRangeValues values = metrics.get(j); for (int k = 0; k < values.getValues().size() && k < metricHeaders.size(); k++) { System.out.println("セッション数: " + values.getValues().get(k)); } } } } }
(1)GoogleCredentialオブジェクトの生成
Googleアナリティクス APIとの認証を行うためのGoogleCredentialオブジェクトを生成をします。
必要な認証情報をセットして、AnalyticsReportingオブジェクトへ初期化のための引数として渡します。
(2)AnalyticsReportingオブジェクトの生成
Googleアナリティクス APIのReportingのサービスを提供するAnalyticsReportingオブジェクトを生成し、返り値として返しています。
(3)期間の指定
レポートを作成する際の期間を指定します。ここではGoogleアナリティクス管理画面のデフォルトと同じ過去30日(昨日まで)を指定しています。
(4)指標の指定
レポートで確認したい指標を指定します。指標は少なくとも一つ指定する必要があります。なおディメンションはこのサンプルでは指定していないため、レポート結果は全てのデータが対象になります。ここでは指標としてsession(セッション数)を指定しています。
(5)ReportRequestオブジェクトの生成
APIにレポートをリクエストするためのReportRequestオブジェクトを生成します。このオブジェクトを先ほど生成したAnalyticsReportingオブジェクトのreportsメソッドなどに引数として渡すことで、リクエストが実行されレポートデータがresponseとして返ってきます。
(6)ヘッダ情報の取得
レポートデータのヘッダ情報を取得しています。ヘッダ情報には指標などレポートの項目数や項目名が含まれます。これらレポートの項目に関する情報を元に必要な分だけループして値を取り出します。
はじめてのAPI利用:最新セッションを取得するサンプルコード
API利用の確認のためにサンプルコードを実行してみましょう。
コードを実行します。
javac -cp $CLASS_PATH SampleAnalyticsReporting.java java -cp $CLASS_PATH SampleAnalyticsReporting
下記のようになれば成功です。
セッション数: 23
さらにこの値がGoogleアナリティクスの管理画面で表示される値と一致していることを確認します。
期間を過去30日分に設定し、レポートの「ユーザー」「サマリー」で全体のセッション数と一致していればOKです。
まとめ
本稿でGoogleアナリティクス APIの概要と利用開始の準備を中心にお伝えしました。
これでGoogleアナリティクスを徹底活用する準備が整いました。今後の連載ではデータのレポーティングに対応するCoreReportingAPIを詳しく、またデータ取得に対応するMesurementProtcolについて解説する予定です。