PythonでGoogle Analyticsからデータを取得する方法(2) Pythonプログラミング
2020/06/15
PythonでGoogle Analyticsからデータを取得する方法について、前回はGoogle Analytics Reporting APIの設定方法について書きました。
今回はPython側のプログラミングについて説明します。
ライブラリのインストール
まず、コンソールで以下のコマンドを打ち込んでGoogle Analyticsにアクセスするためのライブラリをインストールします。
$ pip install --upgrade google-api-python-client $ pip install --upgrade oauth2client
サンプルプログラムを試す
以下のサイトにサンプルプログラムが掲載されているので、まずは単純にそれをコピペして実行しましょう。
https://developers.google.com/analytics/devguides/reporting/core/v4/quickstart/installed-py?hl=ja
赤枠で囲ったところがサンプルプログラムです。
KEY_FILE_LOCATION と VIEW_IDを書き換えます。これらは前回の記事で説明したものであらかじめ控えていたと思います。
早速実行してみましょう。以下のように国別のセッションが現れれば成功です。
ほしいデータを取得できるよう修正する
どんなデータがほしいかによりますが、ページごとのPVを取得するケースが多いんじゃないかと。指定した期間の記事ごとのPVを出力する方法について書きます。
以下の箇所を書き換えればOKです。下の段の赤枠をコメントアウトして上段のコードに書き換えています。※ソースコード全文は一番下に掲載しています。
以下の通りページごとのPVが現れれば成功です。
以下がソースコード全文です。pageSizeやdateRangesを変えることで取得データ数や取得期間を変えられます。
from apiclient.discovery import build from oauth2client.service_account import ServiceAccountCredentials SCOPES = ['https://www.googleapis.com/auth/analytics.readonly'] KEY_FILE_LOCATION = 'bamboo-reason-XXXX-XXXX.json' VIEW_ID = 'XXXXXXXXXXXX' def initialize_analyticsreporting(): 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): return analytics.reports().batchGet( body={ 'reportRequests': [ { 'viewId': VIEW_ID, 'pageSize': 100, 'dateRanges': [{'startDate': '2019-11-01', 'endDate': 'today'}], 'metrics': [{'expression': 'ga:pageviews'}], 'dimensions': [{'name': 'ga:pagePath'}, {'name': 'ga:pageTitle'}], 'orderBys': [{'fieldName': 'ga:pageviews', 'sortOrder': 'DESCENDING'}] }] } ).execute() def print_response(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()
スポンサーリンク