Google Analytics にPython APIで接続してみた話【コピペで動く!】

スポンサーリンク
Python

Google Analytics にPython APIを使って接続する方法を紹介します。

Google Analytics とは

Googleが無料で提供するWebページのアクセス解析サービスです。
サイト訪問者の動向を把握することで、どんな記事が注目を集めているのか(人気ページ、不人気ページ)、訪問者の知りたいというニーズを確認したり、問題のあるページを確認することができます。

最終的な目標は訪問者数を伸ばす、PVを増加させることとなります。

Google Cloud Platformの設定

Googleは自社サービスへのAPIをGoogle Cloud Platform経由で著化しています。今回はAnalytics APIを使いますが、YouTube,Calendar そしてGmailなど様々サービスをAPI経由で使用することができます。

新規にGoogle Could Platformを使用できるように設定する必要があります。無料のトライアル(米300ドル付き)もありますので、気軽に試せると思います。

Google Cloud Platform
Google Cloud Platform lets you build, deploy, and scale applications, websites, and services on the same infrastructure as Google.

上記リンクをクリックして、Google Cloud Platform 上に Analytics Reporting API のアプリケーションが使えるプロジェクトを新規に作成します。

作業手順としては
1. 新規プロジェクトを作成
2. そのプロジェクトにGoogle Analytics APIを登録

3. サービスアカウントを作成でJSONファイルを作成し、ダウンロード
4. Google Analytics画面で環境設定
5. Ptyhonでのアクセス

という流れになります。

Google Cloud Platform機能が多すぎて迷子になりそうなのですが、基本的に使う部分は2か所です。

一つ目は左上の三本線のプルダウンから出てくる中で 【APIとサービス】>【認証情報】です。

もう一つは【IAMと管理】>【サービスアカウント】です。

【サービスアカウント】で【サービスアカウントを作成】をクリックします。

3か所入力がありますが、自分の分かりやすいものを入れておけばよいです。ただし、2番目のサービスアカウントのメールアドレスは後ほど使う事になります

【作成して続行】で、プロジェクトへのアクセスを許可を選びますが、

フルアクセスしたければ【オーナー】、ある程度制限したければ【参照者】ぐらいにして完了に進みます。

キー、鍵を追加を選択します。

JSONのカギを作成し、ダウンロードすることになります。このファイルは後ほど使います。

認証情報の取得ができる以下の画面になりますので、「メール」の部分を控えておきます。

以上がGoogle Cloud Platform側での設定です。

Google Analyticsの設定

次に、Google AnalyticsにAPIユーザーを追加することで、指定のGoogle Analyticsに対してAPIがアクセスできる権限を与えます。

左下側の設定をクリックします。ここではWordPressのアドインMonsterInsightsが入っている場合でご紹介します。

【ビューのアクセス管理】を選び、先程のメールアドレスを入力して、追加をを行います。

【ビューの設定】(ビューアクセス管理の上)を選択します。

ここでの【ビューID】は後ほど使います。

Pythonでのコーディング

Pythonを自分の環境で使えるようにしておいてください。

また、必要であれば管理者権限でコマンドプロンプトを起動し、下記コマンドを実行してモジュールをインストールしてください。

pip install google-api-python-client
pip install oauth2client

PythonのJupyter notebookで実行できますが、そのファイルと同じディレクトリ階層、もしくは相対的に分かる場所に先程のJSONファイルを置いてください。Google Colaboratoryでも動きます。

Google Colaboratoryの使い方についてはこちらを参考にしてください。

実際のコードは以下のようになります。

!pip install google-api-python-client
!pip install oauth2client

Google Colaboratoryではすでに適応されているようです。

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


SCOPES = ['https://www.googleapis.com/auth/analytics.readonly']
KEY_FILE_LOCATION = '生成したJsonファイル.json'
VIEW_ID = 'GAのViewID'

start_date = '2021-09-01' 
end_date = '2021-09-25' 
from oauth2client.service_account import ServiceAccountCredentials
from apiclient.discovery import build
import httplib2
import pandas as pd
 
credentials = ServiceAccountCredentials.from_json_keyfile_name(KEY_FILE_LOCATION,SCOPES)


service = build('analyticsreporting', 'v4', credentials=credentials)
response = service.reports().batchGet(
    body={
        'reportRequests': [
            {
                'viewId': VIEW_ID, #Add View ID from GA
                'dateRanges': [{'startDate':start_date, 'endDate':end_date}],
                'metrics': [{'expression': 'ga:sessions'}], 
                'dimensions': [{"name": "ga:pageTitle"}], #Get Pages
                'orderBys': [{"fieldName": "ga:sessions", "sortOrder": "DESCENDING"}], 
                'pageSize': 100
            }]
    }
).execute()

dim = []
val = []
  

for report in response.get('reports', []):
  
    columnHeader = report.get('columnHeader', {})
    dimensionHeaders = columnHeader.get('dimensions', [])
    metricHeaders = columnHeader.get('metricHeader', {}).get('metricHeaderEntries', [])
    rows = report.get('data', {}).get('rows', [])
  
    for row in rows:
  
        dimensions = row.get('dimensions', [])
        dateRangeValues = row.get('metrics', [])
  
        for header, dimension in zip(dimensionHeaders, dimensions):
            dim.append(dimension)
  
        for i, values in enumerate(dateRangeValues):
            for metricHeader, value in zip(metricHeaders, values.get('values')):
                val.append(int(value))
 

val.reverse()
dim.reverse()
 
df = pd.DataFrame() 
df["Sessions"]=val
df["pagePath"]=dim
df=df[["pagePath","Sessions"]].sort_values('Sessions', ascending=False)
df
 

display(df)

です。

あとは、日付ごとのPVなど、いろいろ工夫できると思います。

より多くのことを知りたい場合はオリジナルのリファレンスガイドを参照ください。

Google Analytics  |  Google for Developers

何かのお役に立てば幸いです。

---

最後に参考にさせていただきサイトを紹介しておきます。

PythonでGoogleAnalyticsから情報を取得するには | Tech Media | W2株式会社
Webシステムの保守ではたびたびセールやキャンペーン等のイベント対応を行うことがあると思います。 イベント対応中はGoogleAnalytics(以下GA)でアクティブユーザー(以下AU)が何人いるか等をみて、どのくらいの人数でどのくらいのCPU負荷がかかるのかを把握しています。イベントごとに最大AU数等、GAの画面を...
PythonでGoogle AnalyticsにAPIアクセスしてデータ取得する|仮想サーファー@さぼりエンジニア
「Google Analyticsで表示されてるPVとか記事URLとかをプログラムで扱えるようになりたいな〜」と思うことありますよね。 今回は、そんな方のためにGoogle Analytics APIの設定をして、Google Analyticsの任意のデータをSpread Sheetに書き込む処理をPythonで書...

---

SEO関係の記事を紹介します。

コメント