はじめてのアナリティクス API: サービス アカウント向け Java クイック スタート

このチュートリアルでは、Google アナリティクス アカウントへのアクセス、 アナリティクス API へのクエリ、API レスポンスの処理、結果の出力のために 必要な手順を詳しく説明していきます。 チュートリアルでは、Core Reporting API v3.0Management API v3.0OAuth 2.0 を 使用しています。

ステップ 1: アナリティクス API を有効にする

Google アナリティクス API を使用するには、最初に セットアップ ツールを使用して、Google API コンソールでプロジェクトを 作成し、API を有効にして、認証情報を作成する必要があります。

クライアント ID の作成

  1. [サービス アカウント] ページを開きます。プロンプトが表示されたら、 プロジェクトを選択します。
  2. [サービス アカウントを作成] をクリックします。
  3. [サービス アカウントを作成] ウィンドウで、サービス アカウントの名前を 入力して [新しい秘密鍵の提供] を選択します。サービス アカウントに G Suite ドメイン全体での権限を付与したい場合は、 [G Suite ドメイン全体の委任を有効にする] も選択します。 最後に [作成] をクリックします。

新しい公開キーと秘密キーのペアが生成され、コンピュータにダウンロードされます。 このキーは再発行できませんので、大切に保管してください。

Google アナリティクス アカウントへのサービス アカウントの追加

新しく作成したサービス アカウントには、メールアドレス(&ltprojectId&gt-&ltuniqueId&gt@developer.gserviceaccount.com)が含まれます。このメールアドレスを使用して、API 経由でアクセスしたい Google アナリティクス アカウントにユーザーを追加します。このチュートリアルで必要な権限は、表示と分析のみです。

ステップ 2: Google クライアント ライブラリをインストールする

Google アナリティクス API Java クライアントをインストールするには、すべての JAR ファイルが含まれる ZIP ファイルをダウンロードして展開し、Java のクラスパスにコピーする必要があります。

  1. Google アナリティクス Java クライアント ライブラリをダウンロードします。このライブラリには、すべての必要な依存ライブラリが含まれ、ZIP ファイル形式でまとめられています。
  2. ZIP ファイルを展開します。
  3. libs ディレクトリ内のすべての JAR をクラスパスに追加します。
  4. JAR ファイル google-api-services-analytics-v3-[version].jar をクラスパスに追加します。

ステップ 3: サンプルを設定する

HelloAnalytics.java という名前のファイルを 1 つ作成する必要があります。このファイルには以下に示すサンプルコードを記述します。

  1. 次のソースコードをコピーするかダウンロードして、HelloAnalytics.java として保存します。
  2. 先ほどダウンロードしておいた client_secrets.p12 をサンプルコードと同じディレクトリに移動します。
  3. SERVICE_ACCOUNT_EMAIL および KEY_FILE_LOCATION の値を Developers Console に表示された適切な値に置換します。
import com.google.api.client.googleapis.auth.oauth2.GoogleCredential;
import com.google.api.client.googleapis.javanet.GoogleNetHttpTransport;
import com.google.api.client.http.HttpTransport;
import com.google.api.client.json.JsonFactory;
import com.google.api.client.json.gson.GsonFactory;

import com.google.api.services.analytics.Analytics;
import com.google.api.services.analytics.AnalyticsScopes;
import com.google.api.services.analytics.model.Accounts;
import com.google.api.services.analytics.model.GaData;
import com.google.api.services.analytics.model.Profiles;
import com.google.api.services.analytics.model.Webproperties;

import java.io.File;
import java.io.IOException;

/**
 * A simple example of how to access the Google Analytics API using a service
 * account.
 */
public class HelloAnalytics {

  private static final String APPLICATION_NAME = "Hello Analytics";
  private static final JsonFactory JSON_FACTORY = GsonFactory.getDefaultInstance();
  private static final String KEY_FILE_LOCATION = "/path/to/your.p12";
  private static final String SERVICE_ACCOUNT_EMAIL = "<SERVICE_ACCOUNT_EMAIL>@developer.gserviceaccount.com";
  public static void main(String[] args) {
    try {
      Analytics analytics = initializeAnalytics();

      String profile = getFirstProfileId(analytics);
      System.out.println("First Profile Id: "+ profile);
      printResults(getResults(analytics, profile));
    } catch (Exception e) {
      e.printStackTrace();
    }
  }

  private static Analytics initializeAnalytics() throws Exception {
    // Initializes an authorized analytics service object.

    // Construct a GoogleCredential object with the service account email
    // and p12 file downloaded from the developer console.
    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(AnalyticsScopes.all())
        .build();

    // Construct the Analytics service object.
    return new Analytics.Builder(httpTransport, JSON_FACTORY, credential)
        .setApplicationName(APPLICATION_NAME).build();
  }

  private static String getFirstProfileId(Analytics analytics) throws IOException {
    // Get the first view (profile) ID for the authorized user.
    String profileId = null;

    // Query for the list of all accounts associated with the service account.
    Accounts accounts = analytics.management().accounts().list().execute();

    if (accounts.getItems().isEmpty()) {
      System.err.println("No accounts found");
    } else {
      String firstAccountId = accounts.getItems().get(0).getId();

      // Query for the list of properties associated with the first account.
      Webproperties properties = analytics.management().webproperties()
          .list(firstAccountId).execute();

      if (properties.getItems().isEmpty()) {
        System.err.println("No Webproperties found");
      } else {
        String firstWebpropertyId = properties.getItems().get(0).getId();

        // Query for the list views (profiles) associated with the property.
        Profiles profiles = analytics.management().profiles()
            .list(firstAccountId, firstWebpropertyId).execute();

        if (profiles.getItems().isEmpty()) {
          System.err.println("No views (profiles) found");
        } else {
          // Return the first (view) profile associated with the property.
          profileId = profiles.getItems().get(0).getId();
        }
      }
    }
    return profileId;
  }

  private static GaData getResults(Analytics analytics, String profileId) throws IOException {
    // Query the Core Reporting API for the number of sessions
    // in the past seven days.
    return analytics.data().ga()
        .get("ga:" + profileId, "7daysAgo", "today", "ga:sessions")
        .execute();
  }

  private static void printResults(GaData results) {
    // Parse the response from the Core Reporting API for
    // the profile name and number of sessions.
    if (results != null && !results.getRows().isEmpty()) {
      System.out.println("View (Profile) Name: "
        + results.getProfileInfo().getProfileName());
      System.out.println("Total Sessions: " + results.getRows().get(0).get(0));
    } else {
      System.out.println("No results found");
    }
  }
}

ステップ 4: サンプルを実行する

アナリティクス API を有効にして、Java 用 Google API クライアント ライブラリをインストールし、サンプル ソースコードを設定したら、サンプルの実行準備は完了です。

IDE を使用している場合は、デフォルトの実行ターゲットを必ず HelloAnalytics クラスに設定してください。それ以外の場合は、次のようにコマンドラインからアプリケーションをコンパイルして実行できます。

  1. 次のコマンドを使用してサンプルをコンパイルします。
    javac -classpath /path/to/google/lib/*:/path/to/google/lib/libs/* HelloAnalytics.java
  2. 次のコマンドを使用してサンプルを実行します。
    java -classpath ./:/path/to/google/lib/*:/path/to/google/lib/libs/* HelloAnalytics

以上の手順が完了すると、サンプルコードによって、認証済みユーザーの最初の Google アナリティクス ビュー(旧プロファイル)の名前と、過去 7 日間のセッション数が出力されます。

承認済みの Analytics サービス オブジェクトを使用すると、Management API リファレンス ドキュメントに記載されているサンプルコードをすべて実行できます。たとえば、コードを変更して accountSummaries.list メソッドを試すことができます。