GA4 Data API (v1beta) の runReport でセッション数とページビューを取得する
GA4 Data API を使って指定期間のアクティブユーザー数・セッション数・ページビュー数を取得する基本実装とハマりどころの解説。
GA4Google AnalyticsNode.jsAPI
動作検証・実行環境
Node.jsv22.x
@google-analytics/datav4.11.0
Google Analytics 4Data API v1beta
認証方式サービスアカウント (JSON)
概要・目的
Google Analytics 4 (GA4) の公式ライブラリ @google-analytics/data を使って、指定したプロパティの「アクティブユーザー数」「セッション数」「スクリーンページビュー数」を取得します。
UA(ユニバーサルアナリティクス)と異なり、GA4 ではメトリクス名やディメンション名が変更されているため注意が必要です。
実装コード
以下のコードで認証およびデータ取得を行います。
import { BetaAnalyticsDataClient } from '@google-analytics/data';
// サービスアカウントキーのパスを指定、または環境変数 GOOGLE_APPLICATION_CREDENTIALS を設定
const analyticsDataClient = new BetaAnalyticsDataClient({
keyFilename: process.env.GOOGLE_APPLICATION_CREDENTIALS,
});
async function getGA4BasicMetrics(propertyId: string) {
const [response] = await analyticsDataClient.runReport({
property: `properties/${propertyId}`,
dateRanges: [
{
startDate: '7daysAgo',
endDate: 'today',
},
],
dimensions: [
{
name: 'date',
},
],
metrics: [
{
name: 'activeUsers',
},
{
name: 'sessions',
},
{
name: 'screenPageViews',
},
],
});
console.log('Report result:');
response.rows?.forEach((row) => {
const date = row.dimensionValues?.[0]?.value;
const activeUsers = row.metricValues?.[0]?.value;
const sessions = row.metricValues?.[1]?.value;
const pageViews = row.metricValues?.[2]?.value;
console.log(`${date} -> Users: ${activeUsers}, Sessions: ${sessions}, PV: ${pageViews}`);
});
}
// 実行 (プロパティIDは数字のみ)
getGA4BasicMetrics('123456789');
実行結果 / レスポンス例
Report result:
20260914 -> Users: 42, Sessions: 48, PV: 95
20260915 -> Users: 56, Sessions: 63, PV: 120
20260916 -> Users: 38, Sessions: 41, PV: 81
...
ハマりどころ・注意点
propertyのフォーマット- プロパティIDだけ(例:
123456789)を渡すと400 Bad Requestになります。必ず先頭にproperties/を付与してproperties/123456789と指定してください。
- プロパティIDだけ(例:
- ページビューのメトリクス名
- UA時代の
pageviewsではなく、GA4 ではscreenPageViewsが正しい名前です。
- UA時代の
- 権限エラー (403)
- GCPでサービスアカウントを作成しただけでは閲覧できません。GA4 管理画面 >「プロパティのアクセス管理」から、作成したサービスアカウントのメールアドレスを「閲覧者」として追加する必要があります。