Google Analytics Admin API デベロッパー クイックスタート

このクイックスタートでは、list リクエストを作成して Google アナリティクス Admin API に送信し、レスポンスを表示して API アクセスを設定して確認します。

このクイックスタートでは、SDK、ローカル環境の REST API、または Google Cloud VM インスタンスを使用します。

手順の概要は次のとおりです。

  • Google Cloud プロジェクトを設定し、Google アナリティクス管理 API を有効にします。
  • ローカルマシンまたは Cloud VM インスタンスで以下を行います。
    • Google Cloud をインストール、初期化、認証する。
    • 言語の SDK をインストールします(省略可)。
  • 認証を構成します。
  • Google アナリティクスへのアクセスを設定します。
  • SDK を設定します。
  • API 呼び出しを行います。

Google Cloud プロジェクトの設定

次の [Google Analytics Admin API を有効にする] ボタンをクリックして、新しい Google Cloud プロジェクトを選択または作成し、Google Analytics Admin API を自動的に有効にします。

Google Analytics Admin API を有効にする

Google Cloud の設定

ローカルマシンまたは Cloud VM インスタンスで、Google Cloud を設定して認証します。

  1. Google Cloud をインストールして初期化します。

  2. gcloud コンポーネントが最新であることを確認するには、次のコマンドを実行します。

    gcloud components update

Google Cloud にプロジェクト ID を指定しないためには、gcloud config set コマンドを使用してデフォルトのプロジェクトとリージョンを設定します。

認証を構成する

このクイックスタートでは、アプリケーションのデフォルト認証情報を使用して、アプリケーション環境に基づいて認証情報を自動的に検索します。そのため、認証するクライアントコードを変更する必要はありません。

Google Analytics Admin API は、ユーザー アカウントサービス アカウントをサポートしています。

  • ユーザー アカウントは、Google API やサービスを操作するデベロッパー、管理者、その他のユーザーを表します。
  • サービス アカウントは、特定の人間ユーザーを表すものではありません。アプリケーションが直接関与しない場合(アプリケーションが Google Cloud リソースにアクセスする必要がある場合など)に認証と承認を管理する方法を提供します。

認証とアプリケーションのアカウント認証情報の設定の詳細については、Google での認証方法をご覧ください。

次のコマンドを実行して、ローカルのアプリケーションのデフォルト認証情報(ADC)ファイルを生成します。このコマンドを実行すると、ユーザー認証情報を入力するウェブフローが起動します。

  gcloud auth application-default login --scopes="https://www.googleapis.com/auth/cloud-platform,https://www.googleapis.com/auth/analytics.readonly"

コマンドでは、Google Analytics Admin API で必要なスコープを指定してください。詳細については、アプリケーションのデフォルト認証情報を設定するをご覧ください。

サービス アカウントで認証する手順は次のとおりです。

  1. サービス アカウントを作成します
  2. 次の gcloud CLI コマンドを実行して、サービス アカウントを Cloud VM インスタンスに接続します。
  gcloud compute instances stop YOUR-VM-INSTANCE-ID

  gcloud compute instances set-service-account YOUR-VM-INSTANCE-ID \
    --service-account YOUR-SERVICE-ACCOUNT-EMAIL-ALIAS  \
    --scopes="https://www.googleapis.com/auth/cloud-platform,https://www.googleapis.com/auth/analytics.readonly"

コマンドでは、Google Analytics Admin API で必要なスコープを指定してください。詳細については、アプリケーションのデフォルト認証情報を設定するをご覧ください。

Google アナリティクスへのアクセスを構成する

ユーザーまたはサービス アカウントに関連付けられたメールアドレスに Google アナリティクスのアクセス権を付与します。

プログラミング言語の SDK を設定する

ローカルマシンに、プログラミング言語の SDK をインストールします。

Java クライアント ライブラリのインストール ガイド

PHP クライアント ライブラリのインストール ガイド

Python クライアント ライブラリのインストール ガイド

Node.js クライアント ライブラリのインストール ガイド

.NET クライアント ライブラリのインストール ガイド

Ruby クライアント ライブラリのインストール ガイド

go get google.golang.org/genproto/googleapis/analytics/admin/v1beta

次のように入力して、環境変数を構成します。PROJECT_ID は、Google Cloud プロジェクトの ID に置き換えます。

  EXPORT PROJECT_ID=PROJECT_ID

API 呼び出しを行う

次のコードを実行して、最初の呼び出しを行います。

import com.google.analytics.admin.v1beta.Account;
import com.google.analytics.admin.v1beta.AnalyticsAdminServiceClient;
import com.google.analytics.admin.v1beta.AnalyticsAdminServiceClient.ListAccountsPage;
import com.google.analytics.admin.v1beta.AnalyticsAdminServiceClient.ListAccountsPagedResponse;
import com.google.analytics.admin.v1beta.ListAccountsRequest;

/**
 * This application demonstrates the usage of the Analytics Admin API using service account
 * credentials. For more information on service accounts, see
 * https://cloud.google.com/iam/docs/understanding-service-accounts.
 *
 * <p>The following document provides instructions on setting service account credentials for your
 * application: https://cloud.google.com/docs/authentication/production
 *
 * <p>In a nutshell, you need to:
 *
 * <ol>
 *   <li>Create a service account and download the key JSON file as described at
 *       https://cloud.google.com/docs/authentication/production#creating_a_service_account.
 *   <li>Provide service account credentials using one of the following options:
 *       <ul>
 *         <li>Set the {@code GOOGLE_APPLICATION_CREDENTIALS} environment variable. The API client
 *             will use the value of this variable to find the service account key JSON file. See
 *             https://cloud.google.com/docs/authentication/production#setting_the_environment_variable
 *             for more information.
 *             <p>OR
 *         <li>Manually pass the path to the service account key JSON file to the API client by
 *             specifying the {@code keyFilename} parameter in the constructor. See
 *             https://cloud.google.com/docs/authentication/production#passing_the_path_to_the_service_account_key_in_code
 *             for more information.
 *       </ul>
 * </ol>
 *
 * <p>To run this sample using Maven:
 *
 * <pre>{@code
 * cd google-analytics-data
 * mvn compile exec:java -Dexec.mainClass="com.google.analytics.admin.samples.QuickstartSample"
 * }</pre>
 */
public class QuickstartSample {

  public static void main(String... args) throws Exception {
    listAccounts();
  }

  // This is an example snippet that calls the Google Analytics Admin API and lists all Google
  // Analytics accounts available to the authenticated user.
  static void listAccounts() throws Exception {
    // Instantiates a client using default credentials.
    // See https://cloud.google.com/docs/authentication/production for more information
    // about managing credentials.
    try (AnalyticsAdminServiceClient analyticsAdmin = AnalyticsAdminServiceClient.create()) {
      // Calls listAccounts() method of the Google Analytics Admin API and prints
      // the response for each account.
      ListAccountsPagedResponse response =
          analyticsAdmin.listAccounts(ListAccountsRequest.newBuilder().build());
      for (ListAccountsPage page : response.iteratePages()) {
        for (Account account : page.iterateAll()) {
          System.out.printf("Account name: %s%n", account.getName());
          System.out.printf("Display name: %s%n", account.getDisplayName());
          System.out.printf("Country code: %s%n", account.getRegionCode());
          System.out.printf("Create time: %s%n", account.getCreateTime().getSeconds());
          System.out.printf("Update time: %s%n", account.getUpdateTime().getSeconds());
          System.out.println();
        }
      }
    }
  }
}

require 'vendor/autoload.php';

use Google\Analytics\Admin\V1beta\Account;
use Google\Analytics\Admin\V1beta\Client\AnalyticsAdminServiceClient;
use Google\Analytics\Admin\V1beta\ListAccountsRequest;

/**
 * TODO(developer): Replace this variable with your Google Analytics 4
 *   property ID before running the sample.
 */
$property_id = 'YOUR-GA4-PROPERTY-ID';

// Using a default constructor instructs the client to use the credentials
// specified in GOOGLE_APPLICATION_CREDENTIALS environment variable.
// See https://cloud.google.com/docs/authentication/production for more information
// about managing credentials.
$client = new AnalyticsAdminServiceClient();

// Calls listAccounts() method of the Google Analytics Admin API and prints
// the response for each account.
$request = new ListAccountsRequest();
$response = $client->listAccounts($request);

print 'Result:' . PHP_EOL;
foreach ($response->iterateAllElements() as $account) {
    print 'Account name: ' . $account->getName() . PHP_EOL;
    print 'Display name: ' . $account->getDisplayName() . PHP_EOL;
    print 'Country code: ' . $account->getRegionCode() . PHP_EOL;
    print 'Create time: ' . $account->getCreateTime()->getSeconds() . PHP_EOL;
    print 'Update time: ' . $account->getUpdateTime()->getSeconds() . PHP_EOL;
}

def list_accounts(transport: str = None):
    """
    Lists the available Google Analytics accounts.

    Args:
        transport(str): The transport to use. For example, "grpc"
            or "rest". If set to None, a transport is chosen automatically.
    """
    from google.analytics.admin import AnalyticsAdminServiceClient

    # Using a default constructor instructs the client to use the credentials
    # specified in GOOGLE_APPLICATION_CREDENTIALS environment variable.
    client = AnalyticsAdminServiceClient(transport=transport)

    results = client.list_accounts()

    # Displays the configuration information for all Google Analytics accounts
    # available to the authenticated user.
    print("Result:")
    for account in results:
        print(account)

  // Imports the Google Analytics Admin API client library.
  const analyticsAdmin = require('@google-analytics/admin');

  // Using a default constructor instructs the client to use the credentials
  // specified in GOOGLE_APPLICATION_CREDENTIALS environment variable.
  const analyticsAdminClient = new analyticsAdmin.AnalyticsAdminServiceClient();

  // Lists all Google Analytics accounts available to the authenticated user.
  async function listAccounts() {
    // Uses listAccounts() with no arguments to fetch all pages. For more
    // information on pagination in the Node.js library, see:
    // https://github.com/googleapis/gax-nodejs/blob/main/client-libraries.md#auto-pagination
    const [response] = await analyticsAdminClient.listAccounts();

    console.log('Accounts:');
    for (const account of response) {
      console.log('Account name:', account.name);
      console.log('Display name:', account.displayName);
      console.log('Region code:', account.regionCode);
      console.log('Create time:', account.createTime.seconds);
      console.log('Update time:', account.updateTime.seconds);
    }
  }

  listAccounts();

using Google.Analytics.Admin.V1Beta;
using Google.Api.Gax;
using System;

namespace AnalyticsSamples
{
    class QuickStart
    {
        static void Main(string[] args)
        {
            AnalyticsAdminServiceClient client = AnalyticsAdminServiceClient.Create();
            PagedEnumerable<ListAccountsResponse, Account> response =
                client.ListAccounts( new ListAccountsRequest() );
            foreach( Account account in response )
            {
                Console.WriteLine("Account name: {0}", account.Name);
                Console.WriteLine("Display name: {0}", account.DisplayName);
                Console.WriteLine("Region code: {0}", account.RegionCode);
                Console.WriteLine("Update time: {0}", account.UpdateTime);
                Console.WriteLine("Create time: {0}", account.CreateTime);
                Console.WriteLine();
            }
        }
    }
}

このリクエストを送信するには、コマンドラインから curl コマンドを実行するか、アプリケーションに REST 呼び出しを含めます。

curl -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
  -H "x-goog-user-project: ${PROJECT_ID}" \
  -H "Content-Type: application/json" \
  https://analyticsadmin.googleapis.com/v1beta/accounts

サンプルコードのレスポンスには、ユーザーまたはサービス アカウントが閲覧できる Google アナリティクス アカウントが一覧表示されます。

{
  "accounts": [
    {
      "name": "accounts/123456789",
      "createTime": "2025-01-01T00:12:23.456Z",
      "createTime": "2025-01-01T00:12:23.456Z",
      "displayName": "Demo Account",
      "regionCode": "US",
      "gmpOrganization": "marketingplatformadmin.googleapis.com/organizations/abcdef12345678"
    }
}