GA4とエクセルを連携して、PV数とコンバージョン数を自動入力する方法

データ分析 GA4とエクセル連携 自動レポート作成の巻
お悩みさん

Google Analytics4 と エクセルを連携させて、

自動でレポートを作成したい!

WEBやマーケティングに携わっている人の中には、毎日Google Analyticsをチェックしている人も少なくないのではないでしょうか。

僕も経験がありますが、けっこう手間がかかってしんどい作業ですよね。

それがもし、自動化できたらどうでしょうか。

実は、Pythonを使えば思っているよりも簡単にできちゃうんです!

今回は、それらの応用編として、PythonとGA4に連携しつつ、エクセルにレポートを自動で書き込んでいけるようにしたいと思います。

この記事で学べること
  1. Pythonとエクセルの連携方法
  2. PythonでGA4のレポートを取得する方法
  3. GA4のレポートをエクセルに記載する方法

最初に注意点ですが、今回は、GA4のレポーティングを扱います。
それ以前のバージョン(ユニバーサルと呼ばれるGA3のこと)は方法が異なるのでご注意ください。

環境

OSMac 10.15.4
Pythonpython 3.9
仮想環境Poetry
Homebrew8.0.19 Homebrew
目次

最初に、おさらい記事のご紹介

もっと基本的なことから教えて欲しい!そんな人は以下の記事を参考にしてください。

PythonとGA4の連携 おさらい

PythonとGA4の連携方法については、以下の記事で詳しく解説しています。

Pythonとエクセルの連携 おさらい

Pythonとエクセルの連携方法については、以下の記事で詳しく解説しています。

エクセルデータの準備

上記でご紹介している「Pythonとエクセルの連携」記事と同様、test.xlsxを準備して、以下のように記入しました。

エクセル 日付(date) ユーザー数(activeUser) 新規ユーザー(newUser) コンバージョン(conversions)

左から順番に、以下のヘッダーを作成しています。

  • 日付(date)
  • ユーザー数(activeUser)
  • 新規ユーザー(newUser)
  • コンバージョン(conversions)

ちょっとだけ手間を省けるように、エクセルデータを用意しています。

よければ、こちらからダウンロードできます。

Pythonスクリプト:Python×GA4、エクセル

冒頭に、PythonとGA4の連携、およびPythonとエクセルの連携のためのインポートをしています。

(くどいですが、詳しくは冒頭にご紹介したリンクを参考にしてください。)

from google.analytics.data_v1beta import BetaAnalyticsDataClient
from google.analytics.data_v1beta.types import DateRange
from google.analytics.data_v1beta.types import Dimension
from google.analytics.data_v1beta.types import Metric
from google.analytics.data_v1beta.types import RunReportRequest
import os
import openpyxl as op

os.environ['GOOGLE_APPLICATION_CREDENTIALS'] = 'creds_ga2.json'

ちなみに、Google App Scriptのjsonファイル名は、以下の画像の通りcreds_ga2.jsonという名前で保存しています。

ファイル ga.py creds_ga2.json

Pythonスクリプト:GA4とエクセルの連携

まずGA4とエクセルの連携を以下のように記載しています。

def sample_run_report(property_id="xxxxxxxxxx"):
    client = BetaAnalyticsDataClient()
    wb = op.load_workbook('test.xlsx')
    sheet = wb.get_sheet_by_name('Sheet')

    #最大行
    maxRow = sheet.max_row + 1

    #最大列
    maxClm = sheet.max_column + 1

    request = RunReportRequest(
        property=f"properties/{xxxxxxxxxx}",
        dimensions=[Dimension(name="date")],
        metrics=[Metric(name="activeUsers"),Metric(name="newUsers"),Metric(name="conversions")],
        date_ranges=[DateRange(start_date="yesterday", end_date="yesterday")],
    )
    response = client.run_report(request)
    print("Report result:")
    for row in response.rows:
        print(row.metric_values[0].value, row.metric_values[1].value, row.metric_values[2].value)
        sheet.cell(maxRow,column=1).value = row.dimension_values[0].value
        sheet.cell(maxRow,column=2).value = int(row.metric_values[0].value)
        sheet.cell(maxRow,column=3).value = int(row.metric_values[1].value)
        sheet.cell(maxRow,column=4).value = int(row.metric_values[2].value)
        maxRow += 1
    wb.save("test.xlsx")

if __name__ == '__main__':
    sample_run_report()

以下は補足の情報です。適宜参考にしてください。

プロパティIDの調べ方

一番上の行のproperty_idには、ご自身のGA4プロパティIdを記入します。

GA4の左側の歯車のマークから確認ができます。

GA4管理 プロパティの設定 プロパティID

sheetの変数にはシート名を記入

4行目のsheetの変数には、エクセルファイルのシート名を記入します。

以下の画像の部分です。

(画像では、sheet1になってますがご自身のシート名を入れてください!)

GAS GoogleSheetsAPI  スプレッドシート gmail_test1 シート名 sheet1 sheet2

最大行の表示

Pythonでは、エクセルの最大列、最大行を以下のように表すことができます。

  • エクセルの最大行:max_row
  • エクセルの最大列 : max_column

ので、レポートの更新をするたびに一番下の空白の行に記載するために、+1をして、最大行の変数を作成しています。

    #最大行
    maxRow = sheet.max_row + 1

    #最大列
    maxClm = sheet.max_column + 1

GA4のRequest変数をさらに詳しく

上記のrequestの変数をさらに詳しくみていきます。

GA4のAPIでは、DimensionとMetricsを設定することで、レポートを作成することができます。

    request = RunReportRequest(
        property=f"properties/{xxxxxxxxxx}",
        dimensions=[Dimension(name="date")],
        metrics=[Metric(name="activeUsers"),Metric(name="newUsers"),Metric(name="conversions")],
        date_ranges=[DateRange(start_date="yesterday", end_date="yesterday")],
    )

3行目のDimensionsでは、date(日付)を取得。

4行目のMetricsから、

  • ユーザー数(activeUser)
  • 新規ユーザー(newUser)
  • コンバージョン(conversions)

の3つを取得しています。

これからはリスト形式で取得することが可能です。

最後に、5行目のdate_ranges(日にちの範囲)は、希望の範囲をしてしてください。(ここでは昨日分のみにしています。)

記載例はこんな感じです。(下記では、21年9月1日から9月30日までの範囲を指定できます)

date_ranges=[DateRange(start_date="2021-09-01", end_date="2021-09-30")

dimensions &metricsの一覧

ちなみに、Googleがしっかりとdimensions &metricsの一覧を公開しています。

レポート内容をカスタマイズしたい場合はこちらを参考にしてみてください。

エクセルにGA4のレポートを自動入力

最後に、上記で取得したGA4のレポート内容をエクセルに転記していきます。

    response = client.run_report(request)
    print("Report result:")
    for row in response.rows:
        print(row.metric_values[0].value, row.metric_values[1].value, row.metric_values[2].value)
        sheet.cell(maxRow,column=1).value = row.dimension_values[0].value #日付
        sheet.cell(maxRow,column=2).value = int(row.metric_values[0].value) #アクティブユーザー数
        sheet.cell(maxRow,column=3).value = int(row.metric_values[1].value) #新規ユーザー数
        sheet.cell(maxRow,column=4).value = int(row.metric_values[2].value) #コンバージョン数
        maxRow += 1
    wb.save("test.xlsx")

以下は補足の情報です。適宜参考にしてください。

行には、maxRowを指定する

以下の通りで、行を指定する引数には、maxRowを入力して、

レポートをいつでも一番下の行に更新するようにしていできます。

sheet.cell(maxRow,column=1).value = row.dimension_values[0].value

responceの中身はリスト形式で抽出される

for文でrequestの中身を取り出すとリスト形式になっています。

なので、ここでは以下のように指定する必要があります。

  • 日付:row.dimension_values[0]  ※dimensionから取り出します!
  • アクティブユーザー:row.metrics_values[0] ※metricsから取り出します![1]以降も同様です。

エクセルのデータ保存

最後にエクセルデータを保存します。

    wb.save("test.xlsx")

Pythonスクリプトまとめ

ここまでの流れを踏まえて完成したスクリプトです。

from google.analytics.data_v1beta import BetaAnalyticsDataClient
from google.analytics.data_v1beta.types import DateRange
from google.analytics.data_v1beta.types import Dimension
from google.analytics.data_v1beta.types import Metric
from google.analytics.data_v1beta.types import RunReportRequest
import os
import openpyxl as op

os.environ['GOOGLE_APPLICATION_CREDENTIALS'] = 'creds_ga2.json'



def sample_run_report(property_id="xxxxxxxxxx"):
    client = BetaAnalyticsDataClient()
    wb = op.load_workbook('test.xlsx')
    sheet = wb.get_sheet_by_name('Sheet')

    #最大行
    maxRow = sheet.max_row + 1

    #最大列
    maxClm = sheet.max_column + 1

    request = RunReportRequest(
        property=f"properties/{xxxxxxxxxx}",
        dimensions=[Dimension(name="date")],
        metrics=[Metric(name="activeUsers"),Metric(name="newUsers"),Metric(name="conversions")],
        date_ranges=[DateRange(start_date="yesterday", end_date="yesterday")],
    )
    response = client.run_report(request)
    print("Report result:")
    for row in response.rows:
        print(row.metric_values[0].value, row.metric_values[1].value, row.metric_values[2].value)
        sheet.cell(maxRow,column=1).value = row.dimension_values[0].value
        sheet.cell(maxRow,column=2).value = int(row.metric_values[0].value)
        sheet.cell(maxRow,column=3).value = int(row.metric_values[1].value)
        sheet.cell(maxRow,column=4).value = int(row.metric_values[2].value)
        maxRow += 1
    wb.save("test.xlsx")

if __name__ == '__main__':
    sample_run_report()

実行後のエクセル

最後に実行結果を確認してみます!

Python実行後の結果は以下でした。

Report result:
9 9 0

では、エクセルに自動で記録されているかを確認します。

エクセル 日付(date):20210625 ユーザー数(activeUser):9 新規ユーザー(newUser):9 コンバージョン(conversions):0
クリワン

やった!ちゃんとエクセルにレポートが記録されてる!

ちなみに、サイトのコンバージョンは設定しなかったので、コンバージョン数は0でした!笑

(しかし、PV数はおかげさまでかなり増えています!ありがとうございます(^ ^))

cronでスクリプト実行を自動化

さらにcronを使えば、レポートを自動で記録してくれるだけでなく、スクリプトの自動実行まで可能です。

毎日、毎週、定期的にスクリプトを実行するのも意外とストレスですよね。

そんなストレスから解消してくれるかもしれません。

よければ、こちの記事も参考にしてみてください。

まとめ

毎日のようにGAのレポートに時間を使っている人には、涙が出るほど嬉しい機能ではないでしょうか。

Pythonを使ってGA4のレポートを取得して、さらにそのまま自動でエクセルに記述する方法をご紹介しました。

僕が現場で実際に使っているレポート自動化の一部抜粋を

以下の記事でご紹介しているので、興味があればそちらも参考にしてみください。

それでは、ぜひ、マーケティング業務やサイト解析に活かしてみてください。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

節約に励むマーケターです!30歳を機に別職種から、マーケターにキャリアチェンジ。IT企業で専任のマーケターをしています。0からプログラミングを学びはじめました! ★データサイエンティストの勉強中です!お問合せはこちら!

コメント

コメントする

CAPTCHA


目次