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としたシートを用意します
![](https://s3.ap-northeast-1.amazonaws.com/wraptas-prod/learning/6c411d09-0e21-43f0-bc59-16b2f048d048/c0f398082dd474d2b67ad3d1cd7e5b91.png)
開かれたページでサービスの追加ボタンを押します。
![](https://s3.ap-northeast-1.amazonaws.com/wraptas-prod/learning/866f03c6-6f87-4b34-adb5-55102f1f9408/c6230c2cc0356cc30607589a414c987c.png)
Analytics Data APIを追加します。
![](https://s3.ap-northeast-1.amazonaws.com/wraptas-prod/learning/1d5296e8-c1ce-455c-9d6a-232e1972b322/cf2747aa1403d05d011a5f88dfe7ae0e.png)
スクリプトの作成
Googleのリファレンスを参考に作成します。
コード.jsを以下のコードに書き換えて、propertyIdをGA4のプロパティIDに変更します。
![](https://s3.ap-northeast-1.amazonaws.com/wraptas-prod/learning/3e949b6a-4826-48a8-aad1-03dfaf16ce47/aec2807fb990d113b687ce3cd9c7ad44.png)
GA4Dataのシートに過去7日間のデータが保管されます。
![](https://s3.ap-northeast-1.amazonaws.com/wraptas-prod/learning/a9b5edf7-e875-4d4d-beb2-359def8da04e/4b7d80475800aaf559a27f6a0aba2ee7.png)
4.外部テーブル読み込み ~ 5.蓄積
まずは先ほどのスプレッドシートをBigQuery側から外部テーブルとして読み込めるように設定します。
プロジェクトにデータ保管用のデータセットを作成します。
![](https://s3.ap-northeast-1.amazonaws.com/wraptas-prod/learning/f21616c0-182b-4029-bb14-cdac04eafd0f/d79436a96c735aaa63a52a8e10bef3f2.png)
データセット名はGA4_testとしています
![](https://s3.ap-northeast-1.amazonaws.com/wraptas-prod/learning/7a5b5ffb-810d-4ed6-b1d7-e60362910c90/6fe97669c0b0dda83b93b98090d3efae.png)
![](https://s3.ap-northeast-1.amazonaws.com/wraptas-prod/learning/c5603fdd-db5a-479e-a00a-74312a16aac2/4532db3e8179ec06d5fee27f73f2020f.png)
テーブルの作成元をドライブとして設定を進めると外部テーブルとして設定でき、SpreadSheetの内容をテーブルとして取り扱うことができます。
![](https://s3.ap-northeast-1.amazonaws.com/wraptas-prod/learning/f4634190-7b31-4bab-959f-9729ac3bee14/37fc0bd1918f991782ae0ee09d7e81df.png)
外部テーブルになりました。
![](https://s3.ap-northeast-1.amazonaws.com/wraptas-prod/learning/e4374b6f-d43c-4119-9b6b-8b44c56a9390/1bd6192d279066a0894258209d778804.png)
このままではスプレッドシートの中身が変わるたびにデータが変わってしまうのでデータを貯蓄するテーブルを作成します。
Accumulationの文字を取って接頭文字をAにしてA_GA4DATAとしましょう。
少し楽をするために外部テーブルとして作成したT_GA4DATAにスクリプトを実行することで新しいテーブルを作成してしまいましょう。
新しいタブでクエリを開いてください
![](https://s3.ap-northeast-1.amazonaws.com/wraptas-prod/learning/e1769c98-513e-460d-a2cf-c02441546cc5/d4c227cad774e1cf44e5f891d221d503.png)
SELECTとFROMの間に*(アスタリスク)を入れて、LIMIT句を削除します。
![](https://s3.ap-northeast-1.amazonaws.com/wraptas-prod/learning/336150c8-ef1e-4bc2-8d66-0d87636b715d/69851697936068acd3c76e51cced7273.png)
展開⇒クエリの設定を押します。
![](https://s3.ap-northeast-1.amazonaws.com/wraptas-prod/learning/765ac922-a62c-4768-965a-75caf33fbad2/c6b02bfb3b62dd5e73d731065a9938d6.png)
保存後に先ほどのSQLを実行することで新しくA_GA4DATAのテーブルが作成されました。
![](https://s3.ap-northeast-1.amazonaws.com/wraptas-prod/learning/d73278e2-fffb-4ff4-9d12-5bb0c3492fce/300543eafdb54c2b24b88b790f64c56d.png)
これから蓄積するためのスクリプトを設定するのですが、蓄積作業は蓄積用のテーブルであるA_GA4DATAを削除しながらSpreadSheetの内容を追加する方式とします。
このことにより最新の内容であるSpreadSheetの内容が反映されるのに加えて、スクリプトとしての冪等性を担保しやすくなります。(冪等性の重要性についてはまた記事にします。)![重複期間のデータを削除するので仮にT_GA4DATA側に何らかの間違いが発生しても、修正してスクリプトを再実行すれば問題ありません。](https://s3.ap-northeast-1.amazonaws.com/wraptas-prod/learning/96220f17-9a7e-4e91-ac85-9558b364fee3/e4b6387b65e8c6a5df112d01cd4c827a.png)
重複期間のデータを削除するので仮にT_GA4DATA側に何らかの間違いが発生しても、修正してスクリプトを再実行すれば問題ありません。
![重複期間のデータを削除するので仮にT_GA4DATA側に何らかの間違いが発生しても、修正してスクリプトを再実行すれば問題ありません。](https://s3.ap-northeast-1.amazonaws.com/wraptas-prod/learning/96220f17-9a7e-4e91-ac85-9558b364fee3/e4b6387b65e8c6a5df112d01cd4c827a.png)
削除スクリプト(********はプロジェクト名に書き換えてください)
データ挿入スクリプト
上記の2スクリプトを実行すれば問題ありません。