GoogleアナリティクスのAPIを叩いて、日ごとのPV数等をスプレッドシートに出力するGASを作成して定期実行させていたのですが、この度GA4への移行に伴い既存のコードではデータを取得することができなくなりました。
本記事では、GA4対応版のGoogleアナリティクスからPV数等のデータを取得し、スプレッドシートにレポート出力するGASを設定する手順をまとめます。
概要
目的
- Google アナリティクスから以下のデータを取得し、Google スプレッドシートに出力する。
- 日付
- サイトの総PV数
- アクティブユーザ数
- 新規ユーザ数
- エンゲージメント時間(秒)
- イベント数
- コンバージョンイベント数
前提条件
- Google App Script を使用する
- 当記事を記載するにあたって、GAS、及びGoogleスプレッドシートに関する基礎的な知識は持ち合わせている前提とする
作成手順
作業工程
- Google スプレッドシートを作成する
- スクリプトエディタにて、「Google Analytics Data API」サービスを追加する
- APIを取得するGoogle App Scriptを作成する
- テスト実行
- 定期実行するように「トリガー」を設定する
1. Google スプレッドシートを作成する
レポート出力用のGoogleスプレッドシートを作成します。(既存のものを使用するのでも可です)
スプレッドシートを作る手順は記事がありふれていますのでここでは割愛します。
2. ツールエディタを起動し、「Google Analytics Data API」サービスを追加する
- Google スプレッドシートの上部タブ「拡張機能」→「App Script」からスクリプトエディタを開きます。
- スクリプトエディタのサービスの「+」をクリックします。
- 「サービスを追加」画面で、「Google Analytics Data API」を選択して、追加ボタンをクリックします。
- サービス欄の下に「AnalyticsData」という表示が追加されていることを確認します。
3. Google App Scriptを作成する
- スクリプトエディタにて以下のスクリプトを作成します。
- 環境に応じて適時修正してください
- 修正箇所は「GA4のプロパティID」「データを出力するシート名」に2箇所です
- ヘッダー用に1行目が空くようにしてます
/**
* <説明>
* Google Analytics 4 のプロパティIDのレポートを出力します。
* <更新日>
* 2023/04/05
*/
function GetDateFromGa4() {
// GoogleアナリティクスのプロパティIDを取得する
/*** 修正箇所① ***/
const propertyId = 'GA4のプロパティIDを記載する';
try {
// 列の項目を設定(項目)
// 下記の順にメトリックを取得する
//「日付」「総PV数」「アクティブユーザ数」「新規ユーザ数」「エンゲージメント時間(秒)」「イベント数」「コンバージョンイベント数」
const metric = AnalyticsData.newMetric();
metric.name = 'screenPageViews';
const metric1 = AnalyticsData.newMetric();
metric1.name = 'userEngagementDuration';
const metric2 = AnalyticsData.newMetric();
metric2.name = 'activeUsers';
const metric3 = AnalyticsData.newMetric();
metric3.name = 'newUsers';
const metric4 = AnalyticsData.newMetric();
metric4.name = 'eventCount';
const metric5 = AnalyticsData.newMetric();
metric5.name = 'conversions';
// 行の項目を指定(指標)
const dimension = AnalyticsData.newDimension();
dimension.name = 'date';
// 取得期間を指定する
const dateRange = AnalyticsData.newDateRange();
dateRange.startDate = 'yesterday';
dateRange.endDate = 'yesterday';
// Google Analytics 4からデータを取得するためのリクエストを作成する
const request = AnalyticsData.newRunReportRequest();
request.dimensions = [dimension];
request.metrics = [metric,metric1,metric2,metric3,metric4,metric5];
request.dateRanges = dateRange;
// 指定されたGoogle Analytics 4のプロパティからデータを取得する
const report = AnalyticsData.Properties.runReport(request,
'properties/' + propertyId);
if (!report.rows) {
console.log('No rows returned.');
return;
}
// 現在アクティブなシート名「****」を取得する
/*** 修正箇所② ***/
const spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
const sheet = spreadsheet.getSheetByName('シート名を記載する');
// Analytics Data APIから取得したレポートの結果を整形する
const rows = report.rows.map((row) => {
const dimensionValues = row.dimensionValues.map(
(dimensionValue) => {
return dimensionValue.value;
});
const metricValues = row.metricValues.map(
(metricValues) => {
return metricValues.value;
});
return [...dimensionValues, ...metricValues];
});
// 取得したデータをシートのA列を基準とした最下行に出力する
var lastRowA = sheet.getRange(sheet.getMaxRows(), 1).getNextDataCell(SpreadsheetApp.Direction.UP).getRow();
sheet.getRange(lastRowA + 1, 1, report.rows.length, rows[0].length)
.setValues(rows);
// 処理に"成功"した時にコンソールログに出力するメッセージ
console.log('Report spreadsheet outputs: %s',
spreadsheet.getUrl());
} catch (e) {
// 処理に"失敗"した時にコンソールログに出力するメッセージ
console.log('Failed with error: %s', e.error);
}
}
4. テスト実行
- 「手順3.」で作成したスクリプトをテスト実行してみます。
- 初回実行の場合、Googleからセキュリティ認証を求められますので適時許可をします
- 無事以下のようにレポートが出力されていることを確認します。
- これでは味気ないので見栄えよくなるようにヘッダーを付けてみます。
それっぽくなりました。シートの細かいあれこれは各自修正してみて下さい。
5. 定期実行するように「トリガー」を設定する
- 以下の通りトリガー設定をします。
- トリガー内容: 日次で0~1時に処理を定期実行します。
参考リンク
- 【GAS】Google Analytics GA4のデータを取得する
https://next-k.site/blog/archives/2022/05/31/825 - AppScriptリファレンス – アナリティクス データ サービス
https://developers.google.com/apps-script/advanced/analyticsdata?hl=ja - GASでGA4のAPIの使い方!簡単にGA4指標数値が取得するサンプルコード解説
https://auto-worker.com/blog/?p=5905#
コメント