GA4のデータをGASでスプレッドシートに自動で溜めて、Geminiに毎日分析させる仕組みを作った
「昨日のアクティブユーザー数が急に半分になった」「先週と比べてどのページが伸びたのか」——こういった疑問に答えるために、毎朝 GA4 の管理画面を開いている方は多いと思います。
この記事では、GA4 のデータを Google スプレッドシートに自動で蓄積し、さらに Gemini に分析させて毎朝メールで受け取るまでの仕組みを、Google Apps Script(GAS)と Google Workspace Studio だけで構築した手順を紹介します。
一見シンプルに見える「GA4 のデータをスプレッドシートに溜める」という作業ですが、裏側では URL のクレンジング、API の件数制限、そして「しきい値」という GA4 特有の仕様への対策が必要です。今回のプログラムはそれらの面倒な部分をすべて自動で処理するように設計しています。
ステップ 1:GA4 のデータロックを解除する
アクティブユーザー数が表示されない・データが欠けるといった問題の多くは、GA4 の「しきい値」という仕様が原因です。これは、個人の特定につながりうるデータを GA4 が自動的に隠す機能で、特定の条件下でデータが集計から除外されてしまいます。
以下の設定を変えることで、個人特定シグナルの使用をやめ、しきい値の発動を防げます。過去のデータにも即座に反映されます。
- Google アナリティクスを開き、左下の ⚙(管理) をクリックします。
- 「データの表示」→「レポートの識別子」 を選択します。
- 画面右側の 「すべて表示」(小さな青い文字)をクリックします。
- 選択肢の中から 「デバイスベース(Device-based)」 を選んで保存します。
なぜこれで解決するのか GA4 のデフォルト設定では、ユーザー識別に「Google シグナル」(ログイン情報など)を使っています。このシグナルを使っている状態ではプライバシー保護のためにしきい値が発動し、データが隠されます。「デバイスベース」に切り替えると、識別にシグナルを使わなくなるため、しきい値が発生しなくなります。
ステップ 2:GAS でデータ取得プログラムを設定する
GA4 のデータを自動取得するには、Google Apps Script(GAS)を使います。このプログラムには、以下の処理が組み込まれています。
- URL のクレンジング:クエリパラメータ(
?utm_source=...など)を除去し、同じページを重複カウントしない - API の件数制限への対応:GA4 Data API の 1 日あたりのリクエスト上限を超えないよう、取得をバッチ処理に分割
- 差分取得:毎日の定期実行時は「前回取得済みの日付以降」のデータだけを追記し、重複を防ぐ
ステップ 3:初回だけ「過去データ」をすべて埋める
このプログラムは通常、差分(新しく増えた分)しか処理しません。そのため、初回以降のデータを一括で取得する必要があります。
- コードにある
const IS_RESET = false;をtrueに書き換えます。 - 画面上部の 「実行」 ボタンを押します。シートの内容がいったんリセットされ、2025 年からのデータが正しい設定で一から入力されます(データ量によっては完了まで 1〜2 分かかります)。
- 完了したら、必ず
IS_RESET = falseに戻してください。そのままにしておくと、次の自動実行時にデータが消えてしまいます。
あとは GAS のトリガー(左メニューの時計マーク)で「毎日、午前 2〜3 時に実行」と設定しておけば、毎朝自動で最新データがスプレッドシートの末尾に追記されていきます。
ステップ 4:Gemini にデータを分析させて、毎朝メールで受け取る
スプレッドシートへのデータ蓄積が自動化できたら、「データを読む」作業も Gemini に任せてしまいましょう。ここでは Google Workspace Studio を使い、スプレッドシートのデータを Gemini に分析させ、その結果を毎朝メールで受け取る仕組みを作りました。コードは一切不要で、GUI のフローを組むだけで完結します。
続きは下記のSubstackに無料でご登録いただけると読むことができます!
https://open.substack.com/pub/masashihayashi/p/ga4gasgemini?r=6j0kcg&utm_campaign=post-expanded-share&utm_medium=web