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

このチュートリアルでは、アナリティクス Reporting API v4 にアクセスする手順を詳しく説明します。

1. API を有効にする

アナリティクス Reporting API v4 を使用するには、まずセットアップ ツールの手順に沿って Google API Console でプロジェクトを作成し、API を有効にして、認証情報を作成する必要があります。

認証情報を作成

  1. [サービス アカウント] ページを開きます。画面のメッセージに従って、プロジェクトを選択します。
  2. [ サービス アカウントを作成] をクリックして、サービス アカウントの名前と説明を入力します。デフォルトのサービス アカウント ID を使用することも、別の一意の ID を選択することもできます。入力したら、[作成] をクリックします。
  3. 以降の [サービス アカウントの権限(オプション)] セクションは必須ではありません。[続行] をクリックします。
  4. [ユーザーにこのサービス アカウントへのアクセスを許可] 画面で、[キーの作成] セクションまで下にスクロールします。[ キーを作成] をクリックします。
  5. 表示されたサイドパネルで、キーの形式を選択します。JSON をおすすめします。
  6. [作成] をクリックします。新しい公開鍵と秘密鍵のペアが生成され、パソコンにダウンロードされます。この鍵は再発行できませんので、安全に保管する方法については、サービス アカウント キーの管理をご覧ください。
  7. [秘密鍵がパソコンに保存されました] ダイアログで [閉じる] をクリックし、[完了] をクリックしてサービス アカウントの表に戻ります。

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

新規作成したサービス アカウントのメールアドレスは、次のようになります。

quickstart@PROJECT-ID.iam.gserviceaccount.com

このメールアドレスを使用して、API を介してアクセスする Google アナリティクスのビューにユーザーを追加します。このチュートリアルでは、表示と分析権限のみが必要です。

2. クライアント ライブラリをインストールする

Python パッケージをインストールするには、pipvenv と一緒に使用することをおすすめします。sudo -s apt-get install python3-venv python3 -m venv analytics-quickstart source analytics-quickstart/bin/activate pip install --upgrade google-api-python-client pip install --upgrade oauth2client

3. サンプルをセットアップする

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

  1. 次のソースコードを HelloAnalytics.py にコピーまたはダウンロードします。
  2. 先ほどダウンロードした client_secrets.json をサンプルコードと同じディレクトリに移動します。
  3. KEY_FILE_LOCATION の値は、ダウンロードした client_secrets.json への適切なパスに置き換えます。
  4. VIEW_ID の値を置き換えます。ビュー ID は、Account Explorer で確認できます。
"""Hello Analytics Reporting API V4."""

from apiclient.discovery import build
from oauth2client.service_account import ServiceAccountCredentials


SCOPES = ['https://www.googleapis.com/auth/analytics.readonly']
KEY_FILE_LOCATION = '<REPLACE_WITH_JSON_FILE>'
VIEW_ID = '<REPLACE_WITH_VIEW_ID>'


def initialize_analyticsreporting():
  """Initializes an Analytics Reporting API V4 service object.

  Returns:
    An authorized Analytics Reporting API V4 service object.
  """
  credentials = ServiceAccountCredentials.from_json_keyfile_name(
      KEY_FILE_LOCATION, SCOPES)

  # Build the service object.
  analytics = build('analyticsreporting', 'v4', credentials=credentials)

  return analytics


def get_report(analytics):
  """Queries the Analytics Reporting API V4.

  Args:
    analytics: An authorized Analytics Reporting API V4 service object.
  Returns:
    The Analytics Reporting API V4 response.
  """
  return analytics.reports().batchGet(
      body={
        'reportRequests': [
        {
          'viewId': VIEW_ID,
          'dateRanges': [{'startDate': '7daysAgo', 'endDate': 'today'}],
          'metrics': [{'expression': 'ga:sessions'}],
          'dimensions': [{'name': 'ga:country'}]
        }]
      }
  ).execute()


def print_response(response):
  """Parses and prints the Analytics Reporting API V4 response.

  Args:
    response: An Analytics Reporting API V4 response.
  """
  for report in response.get('reports', []):
    columnHeader = report.get('columnHeader', {})
    dimensionHeaders = columnHeader.get('dimensions', [])
    metricHeaders = columnHeader.get('metricHeader', {}).get('metricHeaderEntries', [])

    for row in report.get('data', {}).get('rows', []):
      dimensions = row.get('dimensions', [])
      dateRangeValues = row.get('metrics', [])

      for header, dimension in zip(dimensionHeaders, dimensions):
        print(header + ': ', dimension)

      for i, values in enumerate(dateRangeValues):
        print('Date range:', str(i))
        for metricHeader, value in zip(metricHeaders, values.get('values')):
          print(metricHeader.get('name') + ':', value)


def main():
  analytics = initialize_analyticsreporting()
  response = get_report(analytics)
  print_response(response)

if __name__ == '__main__':
  main()

4. サンプルを実行する

次のコマンドを使用してサンプルを実行します。

python HelloAnalytics.py

以上の手順が完了すると、サンプルコードによって、指定されたビューの過去 7 日間のセッション数が出力されます。

トラブルシューティング

AttributeError: 「Module_six_moves_urllib_parse」オブジェクトに「urlparse」属性がありません。

Mac OSX でデフォルト インストールの "six" モジュール(このライブラリに依存)が、pip がインストールするモジュールよりも先に読み込まれた場合に、このエラーが発生します。この問題を修正するには、以下の手順で PYTHONPATH システム環境変数に pip のインストール先を追加します。

  • 次のコマンドで pip のインストール先を確認します。

    pip show six | grep "Location:" | cut -d " " -f2

  • 次の行を ~/.bashrc ファイルに追加し、&lt;pip_install_path&gt; を上記で確認した値に置き換えます。

    export PYTHONPATH=$PYTHONPATH:<pip_install_path>

  • 開いているターミナル ウィンドウで、次のコマンドを使用して ~/.bashrc ファイルを再読み込みします。

    source ~/.bashrc