GA4のデータをGoogle Apps Scriptでスプレッドシートに出力する
GA4のデータをほかのデータと統合して分析したりすることがあるかと思います。
その際、GA4の管理画面からCSVファイルなどで書き出すこともできますが、Google Apps Scriptを使うと簡単にGA4のデータをスプレッドシートに出力できます。
GA4のデータをGoogle Apps Scriptでスプレッドシートに出力する方法を解説します。
必要なツール/アカウント
GA4のデータをGoogle Apps Scriptでスプレッドシートに自動で出力するには以下のツールとアカウントが必要になります。
1〜3はGA4を利用しているアカウントであればそのGoogleアカウントで利用できるので問題ありませんが、4のGoogle Analytics Data APIはGoogle Cloud Platformの契約が必要になります。
- GA4
- プロパティID
- Googleスプレッドシート
- スプレッドシートID
- Google Apps Script
- Google Analytics Data API(Google Cloud Platform)
上記の4についてはこちらの2つの記事を参考にしてください。
Google Cloud Platform(GCP)の利用を開始する──アカウントを作る
https://reposub.jp/blogs/bigquery/google_cloud_platform_account
Google Analytics Data APIの利用を開始する手順を解説
https://reposub.jp/blogs/ga4/google_analytics_data_api_enable
設定方法
Google Apps Scriptを開いて「新しいプロジェクト」を作成します。
Google Apps Script
https://script.google.com/home/start
プロジェクトに名前を付けておきましょう。
「サービス」をクリックします。
一覧が表示されるので「Google Analytics Data API」を選択して「追加」をクリックします。
最初から記載されていた内容を削除して、下のスクリプトをコピー&ペーストします。
「日付」「セッション数」を出力するシンプルな構成です。
function runGaReport() {
const propertyId = 'GA4_PROPERY_ID';
const wb = SpreadsheetApp.openById('SPREADSHEET_ID');
const ws = wb.getSheetByName('シート1');
function createMetric(name) {
return { name };
}
function createDimension(name) {
return { name };
}
const metrics = ['sessions'].map(createMetric);
const dimensions = ['date'].map(createDimension);
const dateRange = { startDate: '2024-01-01', endDate: 'yesterday' };
const filterExpression = {
filter: {
fieldName: 'sessionMedium',
stringFilter: { value: 'organic', matchType: 'EXACT' }
}
};
const dimensionFilter = {
andGroup: { expressions: [filterExpression] }
};
const request = {
dimensions: dimensions,
metrics: metrics,
dateRanges: [dateRange],
dimensionFilter: dimensionFilter
};
try {
const report = AnalyticsData.Properties.runReport(request, `properties/${propertyId}`);
if (!report.rows) {
console.log('No rows returned.');
return;
}
ws.clear();
const headers = [...report.dimensionHeaders.map(header => header.name), ...report.metricHeaders.map(header => header.name)];
ws.appendRow(headers);
const rows = report.rows.map(row => {
const dimensionValues = row.dimensionValues.map(value => /^\d{8}$/.test(value.value) ?
`${value.value.substring(0, 4)}/${value.value.substring(4, 6)}/${value.value.substring(6, 8)}` : value.value);
const metricValues = row.metricValues.map(value => value.value);
return [...dimensionValues, ...metricValues];
});
ws.getRange(2, 1, rows.length, headers.length).setValues(rows);
console.log('Report Updated!');
} catch (e) {
console.log(`Failed with error: ${e.error}`);
}
}
コードの2行目、3行目をご自身のアカウントのものに書き換えます。
- const propertyId = 'GA4_PROPERY_ID';
- const wb = SpreadsheetApp.openById('SPREADSHEET_ID');
GA4_PROPERY_IDはGA4の管理画面の「プロパティの詳細」画面の右上にあります。
SPREADSHEET_IDはGoogleスプレッドシートのURL欄の/d/〜〜〜/editの間になります。
https://docs.google.com/spreadsheets/d/ここがIDになります/edit#gid=0
なおスプレッドシートのシート名はデフォルトの「シート1」のままにしておいてください。
書き換えできたら保存して「実行」をクリックします。
GA4にアクセスするための権限の確認フローが始まるので、画面を確認しながら勧めてください。
接続するGA4を管理しているアカウントを選択します。
内容を確認して「許可」をクリック。
アカウントの権限が確認できるとスクリプトが実行されます。
完了すると画面下の実行ログに結果が表示されます。
Googleスプレッドシートを確認してみましょう。
このようにデータが取得できています。
このようにGoogle Apps ScriptでGA4のデータをGoogle Analytics Data APIを利用してGoogleスプレッドシートに抽出することができました!
この状態でGA4のデータが取得できるとほかのデータとの統合など、分析の幅が広がりますね。
以上、GA4のデータをGoogle Apps Scriptでスプレッドシートに自動で出力する方法の解説でした。