GA4データのレポート作成が自動化できる:手動作業から解放され、定期レポート作成の時間を大幅に短縮できます。
GAS活用の第一歩:GASを使ったことがなくても、具体的な手順を通してスクリプト活用のコツがつかめます。
レポートの自由度アップ:自分好みにカスタマイズしたGA4レポートをGoogleスプレッドシートに出力でき、社内共有や分析がよりスムーズになります。
GA4 Data APIの利用設定:GASでGA4のデータを扱うために必要なAPI拡張サービスの有効化手順を解説します。
初回実行時の認証フロー:スクリプトを実行する際に求められるOAuth2認証の流れを押さえ、安全に権限を承認する方法を紹介します。
実践コードの解説:GA4からデータを取得し、スプレッドシートに書き出すGASコードのポイントをわかりやすく説明します。
準備1:GA4 API拡張サービスの有効化方法
準備2:OAuth2認証と初回の承認フロー
実践編:GASコードの解説と実行手順
まとめと活用アイディア
「GA4のデータをもっと手軽にスプレッドシートで見られたらなぁ」と思ったことはありませんか?例えば、毎週のサイト指標を自動で集計してレポート化できたら便利ですよね。そこで登場するのがGASです。GASはGoogleのサービスを自動化できるJavaScriptベースのスクリプトで、GA4のデータ取得もばっちり対応しています。GA4を活用しておられる皆さんなら、どんな指標やディメンションを引っ張ってきたいかイメージが湧くはず。それをスクリプトで自動収集してシートにまとめる方法を、これから一緒に見ていきましょう!
まずはGASからGA4のデータを扱うための下準備です。GA4のデータ取得にはGoogle Analytics Data API(GA4)を使いますが、これはGASで「拡張機能」として提供されています。拡張サービスを有効化すると、面倒なAPI認証周りをGASが処理してくれるのでとてもラクです。
手順:
スクリプトエディタを開く:GA4データを書き出したいスプレッドシートを開き、メニューの「拡張機能」から「Apps Script」をクリックします。これで該当シートに紐づくスクリプトエディタが立ち上がります。
拡張サービスを追加する:スクリプトエディタ画面で左側のメニューに「サービス」という項目があります。そこにある「+」ボタンをクリックし、サービス追加ダイアログから「Google Analytics Data API」を選択して追加します。↓
(この記事を書いている時点では、v1betaが最新です。)
※この操作により、GASからGA4のAnalytics Data APIが使えるようになります。コード上ではAnalyticsData
というオブジェクトを通じてAPIを呼び出せるようになります。
(初回のみ)Google Cloudプロジェクト設定:通常、上記の「サービス」追加を行うと自動的に必要なAPIが有効化されます。もしエラーが出る場合は、スクリプトエディタの左下「プロジェクトの設定」から「Cloud プロジェクトを変更」し、標準のプロジェクトにてAnalytics APIを有効にしてください(通常は不要な手順です)。
これで、準備1は完了です!GAS上でGA4データを扱う土台が整いました。次はいよいよスクリプトを実行…と行きたいところですが、初回実行時には承認(OAuth2認証)が必要になるので、その流れを確認しておきましょう。
GASでGoogleのデータにアクセスする際は、OAuth2認証によるユーザーの許可が必要です。今回のスクリプトでも、初めて実行するときにGoogleから承認を求められるポップアップが表示されます。
具体的な流れは次のとおりです。
実行の開始:スクリプトエディタで関数を実行しようとすると、「承認が必要です」というダイアログが表示されます。ここで「権限を確認」をクリックします。(上記のポップアップ参照)
Googleアカウントの選択:データにアクセスするGoogleアカウントを選びます。今回使用するGA4を閲覧しているアカウントを選択してください。
アプリの確認メッセージ:自作のスクリプトの場合、「このアプリは Google で確認されていません」という警告が出ることがあります。これは自分や社内用で使うGASではよくあることで、心配いりません。 画面左下の「詳細」をクリックし、「プロジェクト名(安全ではないページ)に移動」というリンクをクリックします。↓
権限の承認:アクセス権限の一覧が表示されます。「すべてを選択」をチェックし、「続行」をクリックします。
認証完了:これで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を呼び出す関数が使えます。
レスポンスデータからdimensionHeaders
とmetricHeaders
を取り出し、シートのヘッダー行として追加しています。続いてrows
の中身をループし、dimensionValues
(日付)とmetricValues
(アクティブユーザー数)を取り出してシートに一行ずつ書き込んでいます。
SpreadsheetApp.getActiveSpreadsheet().getActiveSheet()
は現在開いているスプレッドシートのアクティブなシートを指しています。必要に応じてgetSheetByName('シート名')
で特定シートを指定したり、SpreadsheetApp.openById(spreadsheetId)
で別のスプレッドシートに書き込むことも可能です。
実行手順:
コードを貼り付け:スクリプトエディタ上に上記のコードをコピー&ペーストします。自動補完が効くので入力しながら書いてもOKです。冒頭のpropertyId
は自分のGA4プロパティIDに置き換えてください。
コードを実行する前に、次の2つのシートを用意してください。一つ目のシートはシート名「Date」=集計期間を指定します。下記のように、セルB1に開始日をyyyy-mm-dd形式で、C1に終了日を入力してください。2つ目のシートは「月次_gen_全体」で、スクリクリプト実行前は何も記述されていないからのシートです。
スクリプトを保存:コード入力後、上部の保存ボタン(アイコン)をクリックして変更を保存します。
関数を実行:関数リストからexportGa4Report
を選択し、実行ボタンをクリックします。初回実行時は前述のOAuth承認フローが走るので、案内に沿って承認してください。
シートを確認:スクリプトの実行が完了したら、元のスプレッドシートに戻りましょう。指定したシートに日付とアクティブユーザー数のデータが書き出されているはずです。例えば「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://and-aaa.com/contact