Google アナリティクス Data API v1 デベロッパー向けクイックスタート

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

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

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

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

Google Cloud プロジェクトの設定

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

Google アナリティクス Data API v1 を有効にする

Google Cloud の設定

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

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

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

    gcloud components update

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

認証を構成する

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

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

  • ユーザー アカウントは、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 アナリティクス Data API v1 に必要なスコープを指定してください。詳細については、アプリケーションのデフォルト認証情報を設定するをご覧ください。

サービス アカウント

Cloud VM インスタンスを使用してサービス アカウントで認証する手順は次のとおりです。

  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 アナリティクス Data API v1 に必要なスコープを指定してください。詳細については、アプリケーションのデフォルト認証情報を設定するをご覧ください。

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

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

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

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

Java

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

PHP

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

Python

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

Node.js

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

.NET

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

Ruby

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

Go

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

REST

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

  export PROJECT_ID=PROJECT_ID
  export PROPERTY_ID=PROPERTY_ID

API 呼び出しを行う

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

Java

import com.google.analytics.data.v1beta.BetaAnalyticsDataClient;
import com.google.analytics.data.v1beta.DateRange;
import com.google.analytics.data.v1beta.Dimension;
import com.google.analytics.data.v1beta.Metric;
import com.google.analytics.data.v1beta.Row;
import com.google.analytics.data.v1beta.RunReportRequest;
import com.google.analytics.data.v1beta.RunReportResponse;

/**
 * Google Analytics Data API sample quickstart application.
 *
 * <p>This application demonstrates the usage of the Analytics Data API using service account
 * credentials.
 *
 * <p>Before you start the application, please review the comments starting with "TODO(developer)"
 * and update the code to use correct values.
 *
 * <p>To run this sample using Maven:
 *
 * <pre>{@code
 * cd google-analytics-data
 * mvn compile exec:java -Dexec.mainClass="com.google.analytics.data.samples.QuickstartSample"
 * }</pre>
 */
public class QuickstartSample {

  public static void main(String... args) throws Exception {
    /**
     * TODO(developer): Replace this variable with your Google Analytics 4 property ID before
     * running the sample.
     */
    String propertyId = "YOUR-GA4-PROPERTY-ID";
    sampleRunReport(propertyId);
  }

  // This is an example snippet that calls the Google Analytics Data API and runs a simple report
  // on the provided GA4 property id.
  static void sampleRunReport(String propertyId) throws Exception {
    // Using a default constructor instructs the client to use the credentials
    // specified in GOOGLE_APPLICATION_CREDENTIALS environment variable.
    try (BetaAnalyticsDataClient analyticsData = BetaAnalyticsDataClient.create()) {

      RunReportRequest request =
          RunReportRequest.newBuilder()
              .setProperty("properties/" + propertyId)
              .addDimensions(Dimension.newBuilder().setName("city"))
              .addMetrics(Metric.newBuilder().setName("activeUsers"))
              .addDateRanges(DateRange.newBuilder().setStartDate("2020-03-31").setEndDate("today"))
              .build();

      // Make the request.
      RunReportResponse response = analyticsData.runReport(request);

      System.out.println("Report result:");
      // Iterate through every row of the API response.
      for (Row row : response.getRowsList()) {
        System.out.printf(
            "%s, %s%n", row.getDimensionValues(0).getValue(), row.getMetricValues(0).getValue());
      }
    }
  }
}

PHP

require 'vendor/autoload.php';

use Google\Analytics\Data\V1beta\Client\BetaAnalyticsDataClient;
use Google\Analytics\Data\V1beta\DateRange;
use Google\Analytics\Data\V1beta\Dimension;
use Google\Analytics\Data\V1beta\Metric;
use Google\Analytics\Data\V1beta\RunReportRequest;

/**
 * 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.
$client = new BetaAnalyticsDataClient();

// Make an API call.
$request = (new RunReportRequest())
    ->setProperty('properties/' . $property_id)
    ->setDateRanges([
        new DateRange([
            'start_date' => '2020-03-31',
            'end_date' => 'today',
        ]),
    ])
    ->setDimensions([new Dimension([
            'name' => 'city',
        ]),
    ])
    ->setMetrics([new Metric([
            'name' => 'activeUsers',
        ])
    ]);
$response = $client->runReport($request);

// Print results of an API call.
print 'Report result: ' . PHP_EOL;

foreach ($response->getRows() as $row) {
    print $row->getDimensionValues()[0]->getValue()
        . ' ' . $row->getMetricValues()[0]->getValue() . PHP_EOL;
}

Python

from google.analytics.data_v1beta import BetaAnalyticsDataClient
from google.analytics.data_v1beta.types import (
    DateRange,
    Dimension,
    Metric,
    RunReportRequest,
)


def sample_run_report(property_id="YOUR-GA4-PROPERTY-ID"):
    """Runs a simple report on a Google Analytics 4 property."""
    # TODO(developer): Uncomment this variable and replace 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.
    client = BetaAnalyticsDataClient()

    request = RunReportRequest(
        property=f"properties/{property_id}",
        dimensions=[Dimension(name="city")],
        metrics=[Metric(name="activeUsers")],
        date_ranges=[DateRange(start_date="2020-03-31", end_date="today")],
    )
    response = client.run_report(request)

    print("Report result:")
    for row in response.rows:
        print(row.dimension_values[0].value, row.metric_values[0].value)

Node.js

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

  // Imports the Google Analytics Data API client library.
  const {BetaAnalyticsDataClient} = require('@google-analytics/data');

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

  // Runs a simple report.
  async function runReport() {
    const [response] = await analyticsDataClient.runReport({
      property: `properties/${propertyId}`,
      dateRanges: [
        {
          startDate: '2020-03-31',
          endDate: 'today',
        },
      ],
      dimensions: [
        {
          name: 'city',
        },
      ],
      metrics: [
        {
          name: 'activeUsers',
        },
      ],
    });

    console.log('Report result:');
    response.rows.forEach((row) => {
      console.log(row.dimensionValues[0], row.metricValues[0]);
    });
  }

  runReport();

.NET

using Google.Analytics.Data.V1Beta;
using System;

namespace AnalyticsSamples
{
    class QuickStart
    {
        static void SampleRunReport(string propertyId="YOUR-GA4-PROPERTY-ID")
        {
            /**
             * TODO(developer): Uncomment this variable and replace with your
             *  Google Analytics 4 property ID before running the sample.
             */
            // propertyId = "YOUR-GA4-PROPERTY-ID";

            // Using a default constructor instructs the client to use the credentials
            // specified in GOOGLE_APPLICATION_CREDENTIALS environment variable.
            BetaAnalyticsDataClient client = BetaAnalyticsDataClient.Create();

            // Initialize request argument(s)
            RunReportRequest request = new RunReportRequest
            {
                Property = "properties/" + propertyId,
                Dimensions = { new Dimension{ Name="city"}, },
                Metrics = { new Metric{ Name="activeUsers"}, },
                DateRanges = { new DateRange{ StartDate="2020-03-31", EndDate="today"}, },
            };

            // Make the request
            RunReportResponse response = client.RunReport(request);

            Console.WriteLine("Report result:");
            foreach(Row row in response.Rows)
            {
                Console.WriteLine("{0}, {1}", row.DimensionValues[0].Value, row.MetricValues[0].Value);
            }
        }
        static int Main(string[] args)
        {
            if (args.Length > 0) {
                SampleRunReport(args[0]);
            } else {
                SampleRunReport();
            }
            return 0;
        }
    }
}

REST

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

curl -X POST \
  -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
  -H "x-goog-user-project: ${PROJECT_ID}" \
  -H "Content-Type: application/json" \
  -d '
  {
    "dateRanges": [
      {
        "startDate": "2025-01-01",
        "endDate": "2025-02-01"
      }
    ],
    "dimensions": [
      {
        "name": "country"
      }
    ],
    "metrics": [
      {
        "name": "activeUsers"
      }
    ]
  }'  https://analyticsdata.googleapis.com/v1beta/properties/${PROPERTY_ID}:runReport

レスポンスには、アクティブ ユーザーが国別に分類されたレポートが含まれます。次に例を示します。

{
  "dimensionHeaders": [
    {
      "name": "country"
    }
  ],
  "metricHeaders": [
    {
      "name": "activeUsers",
      "type": "TYPE_INTEGER"
    }
  ],
  "rows": [
    {
      "dimensionValues": [
        {
          "value": "United States"
        }
      ],
      "metricValues": [
        {
          "value": "3242"
        }
      ]
    },
    {
      "dimensionValues": [
        {
          "value": "(not set)"
        }
      ],
      "metricValues": [
        {
          "value": "3015"
        }
      ]
    },
    {
      "dimensionValues": [
        {
          "value": "India"
        }
      ],
      "metricValues": [
        {
          "value": "805"
        }
      ]
    }
  ],
  "rowCount": 3,
  "metadata": {
    "currencyCode": "USD",
    "timeZone": "America/Los_Angeles"
  },
  "kind": "analyticsData#runReport"
}