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の内容が反映されるのに加えて、スクリプトとしての冪等性を担保しやすくなります。(冪等性の重要性についてはまた記事にします。)
削除スクリプト(********はプロジェクト名に書き換えてください)
データ挿入スクリプト
上記の2スクリプトを実行すれば問題ありません。