GASでGA4のデータを自動取得・蓄積する方法
Google Apps Script(GAS)からBigQueryの連携が簡単に
最近、GASのライブラリに「Google Analytics Data API」というサービスが追加されました。
現在はベータ版の状態ではありますが、GA4のデータをGASを利用して取得することができるサービス連携となっており、以前まで構築が難しかったGA4レポートの自動更新を行えるものとなっています。
これにより、GA4移行への障害が一つ改善されるとは思いますが、GA4ではデータの最長保持期間が14ヶ月となっているため、取得したレポートを蓄積する先が必要となる場合が多いのではないかと思います。
本記事ではGASで取得したGA4のデータをGCPのサービスの一つであるBigQueryに蓄積する構築の手順をご紹介します。
作業手順
前提・準備
SpreadSheet、GA4、BigQueryの3つを同じユーザーで参照できる状態とします。また、BigQueryとGA4についてはアカウントを取得し、一通りの設定は終わっているものとします。
1.取得データの指定 ~ 3.結果の貼り付け
スプレッドシートの準備
シート名をGA4Dataとしたシートを用意します

開かれたページでサービスの追加ボタンを押します。

Analytics Data APIを追加します。

スクリプトの作成
Googleのリファレンスを参考に作成します。
コード.jsを以下のコードに書き換えて、propertyIdをGA4のプロパティIDに変更します。

GA4Dataのシートに過去7日間のデータが保管されます。

4.外部テーブル読み込み ~ 5.蓄積
まずは先ほどのスプレッドシートをBigQuery側から外部テーブルとして読み込めるように設定します。
プロジェクトにデータ保管用のデータセットを作成します。

データセット名はGA4_testとしています


テーブルの作成元をドライブとして設定を進めると外部テーブルとして設定でき、SpreadSheetの内容をテーブルとして取り扱うことができます。

外部テーブルになりました。

このままではスプレッドシートの中身が変わるたびにデータが変わってしまうのでデータを貯蓄するテーブルを作成します。
Accumulationの文字を取って接頭文字をAにしてA_GA4DATAとしましょう。
少し楽をするために外部テーブルとして作成したT_GA4DATAにスクリプトを実行することで新しいテーブルを作成してしまいましょう。
新しいタブでクエリを開いてください

SELECTとFROMの間に*(アスタリスク)を入れて、LIMIT句を削除します。

展開⇒クエリの設定を押します。

保存後に先ほどのSQLを実行することで新しくA_GA4DATAのテーブルが作成されました。

これから蓄積するためのスクリプトを設定するのですが、蓄積作業は蓄積用のテーブルであるA_GA4DATAを削除しながらSpreadSheetの内容を追加する方式とします。
このことにより最新の内容であるSpreadSheetの内容が反映されるのに加えて、スクリプトとしての冪等性を担保しやすくなります。(冪等性の重要性についてはまた記事にします。)
重複期間のデータを削除するので仮にT_GA4DATA側に何らかの間違いが発生しても、修正してスクリプトを再実行すれば問題ありません。

削除スクリプト(********はプロジェクト名に書き換えてください)
データ挿入スクリプト
上記の2スクリプトを実行すれば問題ありません。