このチュートリアルでは、Google アナリティクス アカウントへのアクセス、 アナリティクス API へのクエリ、API レスポンスの処理、結果の出力のために 必要な手順を詳しく説明していきます。チュートリアルでは、Core Reporting API v3.0、Management API v3.0、 OAuth 2.0 を使用しています。
ステップ 1: アナリティクス API を有効にする
Google アナリティクス API を使用するには、最初に セットアップ ツールを使用して Google API コンソールでプロジェクトを 作成し、API を有効にして認証情報を作成する必要があります。
クライアント ID を作成する
- [サービス アカウント] ページを開きます。 画面のメッセージに従って、プロジェクトを選択します。
- [サービス アカウントを作成] をクリックします。
- [サービス アカウントの作成] ウィンドウで、サービス アカウント名を 入力して [新しい秘密鍵の提供] をオンにします。サービス アカウントに Google Workspace ドメイン全体の権限を付与する場合、[Google Workspace ドメイン全体の委任を有効にする] も選択します。選択したら、[保存] をクリックします。
新しい公開鍵 / 秘密鍵のペアが生成され、マシンにダウンロードされます。この鍵には他のコピーはありません。安全に保管してください。
Google アナリティクス アカウントへのサービス アカウントの追加
新しく作成したサービス アカウントには、メールアドレス(<projectId>-<uniqueId>@developer.gserviceaccount.com
)が含まれます。このメールアドレスを使用して、API 経由でアクセスしたい Google アナリティクス アカウントにユーザーを追加します。このチュートリアルで必要な権限は、表示と分析のみです。
ステップ 2: Google クライアント ライブラリをインストールする
Google アナリティクス API Java クライアントをインストールするには、すべての JAR ファイルが含まれる ZIP ファイルをダウンロードして展開し、Java のクラスパスにコピーする必要があります。
- Google アナリティクス Java クライアント ライブラリをダウンロードします。このライブラリには、すべての必要な依存ライブラリが含まれ、ZIP ファイル形式でまとめられています。
- ZIP ファイルを展開します。
libs
ディレクトリ内のすべての JAR をクラスパスに追加します。- JAR ファイル
google-api-services-analytics-v3-[version].jar
をクラスパスに追加します。
ステップ 3: サンプルを設定する
HelloAnalytics.java
という名前のファイルを 1 つ作成する必要があります。このファイルには以下に示すサンプルコードを記述します。
- 次のソースコードをコピーするかダウンロードして、
HelloAnalytics.java
に記述します。 - 先ほどダウンロードしておいた
client_secrets.JSON
をサンプルコードと同じディレクトリに移動します。 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.FileInputStream; import java.io.IOException; import java.security.GeneralSecurityException; 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 = "<REPLACE_WITH_JSON_FILE>"; 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(); } } /** * Initializes an Analytics service object. * * @return An authorized Analytics service object. * @throws IOException * @throws GeneralSecurityException */ private static AnalyticsReporting initializeAnalytic() throws GeneralSecurityException, IOException { HttpTransport httpTransport = GoogleNetHttpTransport.newTrustedTransport(); GoogleCredential credential = GoogleCredential .fromStream(new FileInputStream(KEY_FILE_LOCATION)) .createScoped(AnalyticsScopes.all()); // 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
クラスに設定してください。それ以外の場合は、次のようにコマンドラインからアプリケーションをコンパイルして実行できます。
- 次のコマンドを使用してサンプルをコンパイルします。
javac -classpath /path/to/google/lib/*:/path/to/google/lib/libs/* HelloAnalytics.java
- 次のコマンドを使用してサンプルを実行します。
java -classpath ./:/path/to/google/lib/*:/path/to/google/lib/libs/* HelloAnalytics
以上の手順が完了すると、サンプルコードによって、認証済みユーザーの最初の Google アナリティクス ビュー(旧プロファイル)の名前と、直前 7 日間のセッション数が出力されます。
承認済みの Analytics サービス オブジェクトを使用すると、Management API リファレンス ドキュメントに記載されているサンプルコードをすべて実行できます。たとえば、コードを変更して accountSummaries.list メソッドを試すことができます。