GA4データをGoogleスプレッドシートにレポート出力する方法(Google Apps Script (GAS) 活用)
Photo by fakurian on Unsplash

GA4データをGoogleスプレッドシートにレポート出力する方法(Google Apps Script (GAS) 活用)

    • GA4データのレポート作成が自動化できる:手動作業から解放され、定期レポート作成の時間を大幅に短縮できます。

    • GAS活用の第一歩:GASを使ったことがなくても、具体的な手順を通してスクリプト活用のコツがつかめます。

    • レポートの自由度アップ:自分好みにカスタマイズしたGA4レポートをGoogleスプレッドシートに出力でき、社内共有や分析がよりスムーズになります。

    • GA4 Data APIの利用設定:GASでGA4のデータを扱うために必要なAPI拡張サービスの有効化手順を解説します。

    • 初回実行時の認証フロー:スクリプトを実行する際に求められるOAuth2認証の流れを押さえ、安全に権限を承認する方法を紹介します。

    • 実践コードの解説:GA4からデータを取得し、スプレッドシートに書き出すGASコードのポイントをわかりやすく説明します。

    1. 準備1:GA4 API拡張サービスの有効化方法

    2. 準備2:OAuth2認証と初回の承認フロー

    3. 実践編:GASコードの解説と実行手順

    4. まとめと活用アイディア


    「GA4のデータをもっと手軽にスプレッドシートで見られたらなぁ」と思ったことはありませんか?例えば、毎週のサイト指標を自動で集計してレポート化できたら便利ですよね。そこで登場するのがGASです。GASはGoogleのサービスを自動化できるJavaScriptベースのスクリプトで、GA4のデータ取得もばっちり対応しています。GA4を活用しておられる皆さんなら、どんな指標やディメンションを引っ張ってきたいかイメージが湧くはず。それをスクリプトで自動収集してシートにまとめる方法を、これから一緒に見ていきましょう!

    まずはGASからGA4のデータを扱うための下準備です。GA4のデータ取得にはGoogle Analytics Data API(GA4)を使いますが、これはGASで「拡張機能」として提供されています。拡張サービスを有効化すると、面倒なAPI認証周りをGASが処理してくれるのでとてもラクです。

    手順:

    1. スクリプトエディタを開く:GA4データを書き出したいスプレッドシートを開き、メニューの「拡張機能」から「Apps Script」をクリックします。これで該当シートに紐づくスクリプトエディタが立ち上がります。

    2. 拡張サービスを追加する:スクリプトエディタ画面で左側のメニューに「サービス」という項目があります。そこにある「+」ボタンをクリックし、サービス追加ダイアログから「Google Analytics Data API」を選択して追加します。

      (この記事を書いている時点では、v1betaが最新です。)

      • ※この操作により、GASからGA4のAnalytics Data APIが使えるようになります。コード上ではAnalyticsDataというオブジェクトを通じてAPIを呼び出せるようになります。

    3. (初回のみ)Google Cloudプロジェクト設定:通常、上記の「サービス」追加を行うと自動的に必要なAPIが有効化されます。もしエラーが出る場合は、スクリプトエディタの左下「プロジェクトの設定」から「Cloud プロジェクトを変更」し、標準のプロジェクトにてAnalytics APIを有効にしてください(通常は不要な手順です)。

    これで、準備1は完了です!GAS上でGA4データを扱う土台が整いました。次はいよいよスクリプトを実行…と行きたいところですが、初回実行時には承認(OAuth2認証)が必要になるので、その流れを確認しておきましょう。

    GASでGoogleのデータにアクセスする際は、OAuth2認証によるユーザーの許可が必要です。今回のスクリプトでも、初めて実行するときにGoogleから承認を求められるポップアップが表示されます。

    具体的な流れは次のとおりです。

    1. 実行の開始:スクリプトエディタで関数を実行しようとすると、「承認が必要です」というダイアログが表示されます。ここで「権限を確認」をクリックします。(上記のポップアップ参照)

    2. Googleアカウントの選択:データにアクセスするGoogleアカウントを選びます。今回使用するGA4を閲覧しているアカウントを選択してください。

    3. アプリの確認メッセージ:自作のスクリプトの場合、「このアプリは Google で確認されていません」という警告が出ることがあります。これは自分や社内用で使うGASではよくあることで、心配いりません。 画面左下の「詳細」をクリックし、「プロジェクト名(安全ではないページ)に移動」というリンクをクリックします。

    1. 権限の承認:アクセス権限の一覧が表示されます。「すべてを選択」をチェックし、「続行」をクリックします。

    2. 認証完了:これでOAuth2の承認は完了です!以降、このスクリプトは指定したGoogleアカウントでGA4データにアクセスできるようになります。次回以降の実行時は、基本的に再認証は不要です(スクリプトの権限範囲を変更しない限り)。

    補足: OAuth2認証とは、ユーザーが第三者のアプリ(今回の場合は自作のGAS)に自分のデータへのアクセスを一時的に許可する仕組みです。承認画面で求められる権限は最小限に留め、安全に配慮されています。自分で内容を理解して作成したスクリプトであれば、安心して許可してOKです。

    準備が整ったら、いよいよGASのコードを作成してGA4のデータをスプレッドシートに書き出してみましょう!ここではシンプルな例として、ある期間のアクティブユーザー数を日別にシートへ出力するスクリプトを書いてみます。コードは以下のとおりです。

    function exportMonthlyGa4DataGenAll() {
      // GA4 プロパティID
      const propertyId = '(対象GA4プロパティのIDを指定します)';
    
      // 対象シート
      const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('月次_gen_全体');
      const dateSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Date');
    
      // 期間取得
      const startDate = dateSheet.getRange('B1').getDisplayValue();
      const endDate   = dateSheet.getRange('C1').getDisplayValue();
    
      // APIリクエスト設定(オブジェクトリテラルを使う方法)
      const request = {
        dimensions: [
          { name: 'yearMonth' }
        ],
        metrics: [
          { name: 'sessions' },
          { name: 'bounceRate' },
          { name: 'totalUsers' },
          { name: 'purchaseRevenue' }
        ],
        dateRanges: [
          { startDate: startDate, endDate: endDate }
        ]
      };
    
      // GA4 レポートを取得(Advanced Service「AnalyticsData」を利用)
      // ※ Advanced Service の有効化とスクリプトプロパティの設定が必要です
      const response = AnalyticsData.Properties.runReport(request, `properties/${propertyId}`);
    
      // データがない場合は終了
      if (!response.rows) return;
    
      // ヘッダー出力
      const headers = ["月", "セッション", "直帰率", "総ユーザー数", "購入による総収益"];
      sheet.getRange(2, 1, 1, headers.length).setValues([headers]);
    
      // レスポンスデータを整形してセット
      const rows = response.rows.map(row => {
        // yearMonth → YYYY-MM に整形
        let ym = row.dimensionValues[0].value;
        ym = ym.slice(0,4) + "-" + ym.slice(4);
    
        // 数値変換
        const sessions = Number(row.metricValues[0].value);
        let bounceRate = Number(row.metricValues[1].value);
        const totalUsers = Number(row.metricValues[2].value);
        const revenue = Number(row.metricValues[3].value);
    
        // 直帰率と収益を文字列として整形
        if (bounceRate < 1) bounceRate *= 100;  // 0.xx → xx%
        const bounceRateStr = bounceRate.toFixed(1) + "%";
        const revenueStr = "$" + revenue.toFixed(2);
    
        return [ym, sessions, bounceRateStr, totalUsers, revenueStr];
      });
    
      // 行があれば書き込み
      if (rows.length > 0) {
        sheet.getRange(3, 1, rows.length, headers.length).setValues(rows);
      }
    }

    コードのポイント解説:

    • propertyIdには対象GA4プロパティのIDを指定します。これはGA4管理画面の「プロパティ設定」に表示されている数字IDです(G-XXXXXXXXの測定IDとは異なるので注意してください!)。

    • AnalyticsData.newDateRange()などの部分で日付や指標のオブジェクトを作成し、期間(日付範囲)ディメンション(ここでは日付)・指標(ここではアクティブユーザー数)をリクエストにセットしています。endDate: 'today'とすることで、このスクリプトを実行した当日までのデータを取得可能です。

    • AnalyticsData.Properties.runReport(request)で実際にGA4のレポートデータを取得しています。拡張サービスを有効化したことで、このように直接GA4 APIを呼び出す関数が使えます。

    • レスポンスデータからdimensionHeadersmetricHeadersを取り出し、シートのヘッダー行として追加しています。続いてrowsの中身をループし、dimensionValues(日付)とmetricValues(アクティブユーザー数)を取り出してシートに一行ずつ書き込んでいます。

    • SpreadsheetApp.getActiveSpreadsheet().getActiveSheet()は現在開いているスプレッドシートのアクティブなシートを指しています。必要に応じてgetSheetByName('シート名')で特定シートを指定したり、SpreadsheetApp.openById(spreadsheetId)で別のスプレッドシートに書き込むことも可能です。

    実行手順:

    1. コードを貼り付け:スクリプトエディタ上に上記のコードをコピー&ペーストします。自動補完が効くので入力しながら書いてもOKです。冒頭のpropertyIdは自分のGA4プロパティIDに置き換えてください。

    2. コードを実行する前に、次の2つのシートを用意してください。一つ目のシートはシート名「Date」=集計期間を指定します。下記のように、セルB1に開始日をyyyy-mm-dd形式で、C1に終了日を入力してください。2つ目のシートは「月次_gen_全体」で、スクリクリプト実行前は何も記述されていないからのシートです。

    3. スクリプトを保存:コード入力後、上部の保存ボタン(アイコン)をクリックして変更を保存します。

    4. 関数を実行:関数リストからexportGa4Reportを選択し、実行ボタンをクリックします。初回実行時は前述のOAuth承認フローが走るので、案内に沿って承認してください。

    5. シートを確認:スクリプトの実行が完了したら、元のスプレッドシートに戻りましょう。指定したシートに日付とアクティブユーザー数のデータが書き出されているはずです。例えば「2023-01-01 の activeUsers が 100」ならシートにその通りの値が入っています。

    トラブルシューティング: もしデータが出力されない場合は、スクリプトエディタのエラーログを確認しましょう。プロパティIDの入力ミスや、GA4側で該当データがない期間指定になっていないかなどをチェックしてください。

    今回は、GA4を活用中の皆さん向けにGASを使ってGA4レポートをスプレッドシートに自動出力する方法を紹介しました。準備段階の設定さえ済ませれば、あとはコードを実行するだけで常に最新のGA4データをシートに反映できます。

    今回のポイントを振り返ると:

    • GASの拡張サービスとしてGA4のAnalytics Data APIを有効化し、簡単にGA4のデータ取得が可能になりました。

    • 初回実行時のOAuth2認証を行うことで、スクリプトに必要な権限を付与し、安全にデータへアクセスできました。

    • サンプルコードでは日別アクティブユーザー数を取得しましたが、指標やディメンションを変えれば自由自在に欲しいレポートを作成可能です。

    最後に、せっかく自動化したレポートはぜひ定期実行してみましょう。GASのトリガー機能を使えば、今回のスクリプトを毎日や毎週自動で実行させることもできます。例えば毎朝自動で前日の指標を追記したり、月初に前月分のレポートを更新したりといった運用も夢ではありません。時間主導型のトリガーを設定しておけば、あなたの代わりにGASがせっせとレポートを更新してくれます。

    最後まで読んでいただいて、ありがとうございました。

    この記事に関するご質問は、https://and-aaa.com/contact までお願いいたします。

    <お知らせ>

    【and,a】は月額固定費ゼロ&無料相談に加え、単発のご依頼もOK Web解析はもちろん、#Web制作 #広告運用 #エンジニアリング #LookerStudio #マーケ内製化研修 まで幅広くサポート。お客様の成果向上に貢献いたします。

    ▼資料 https://bit.ly/427KWqc

    ▼お問い合わせ https://and-aaa.com/contact

    アンド,エー株式会社
    facebookTwitterDiscord

    and,a株式会社(and,a Inc. アンド,エー株式会社)

    〒153-0063 東京都目黒区目黒1-4-16 目黒Gビル7階

    Copyright © 2017-2025 and,a Inc. All Rights Reserved.