GA4のPV数をスプレッドシートへ書き出す【Google Apps Script】

プログラムGoogle Apps Script,JavaScript

GA4のPV数をスプレッドシートへ書き出す【Google Apps Script】
GA4のPV数をスプレッドシートへ書き出す【Google Apps Script】

Google Apps Script(GAS)を使ってGoogle Analytics4(GA4)からPV数を取得してスプレッドシートへデータを書きだすサンプルコードを解説します。

ユート

今回はGA4から取得するデータは「ページURLと期間を指定して月間PV数」を取得するサンプルです。

プログラミング歴

この記事を書いている僕は、プログラミング歴10年以上のプログラマーです。
詳細:プログラミング未経験の新卒が10年間プログラマーとして仕事して思うこと

GASでGA4のデータを取得してスプレッドシートへ書き出す

Google Apps Script(GAS)を使ってGoogle Analytics4(GA4)からPV数を取得してスプレッドシートへ書き出すサンプルコードとサンプルコードの解説です。

定数は自分の環境の値へ書き換えが必要です。

サンプルコード

Google Apps Script(GAS)でGA4から「ページURLと期間を指定して月間PV数」を取得してスプレッドシートへ書き出すサンプルコードです。

/*
 * 定数
 */
// GA4のプロパティID
const GA4_PROPERTY_ID = '*****';
// 書き込みするスプレッドシートのID
const SPREADSHEET_ID = '****-*****';
// 書き込みするシート名
const SHEET_NAME = '****';
// PVを取得するWebページのURL
const SEARCH_URL = '****';
// データを検索する期間
const START_DATE = '2023-01-01';
const END_DATE = '2023-01-31';

/**
 * メイン処理
 */
function mainRun()
{
	// GA4へのリクエストを作成
	let request = {
		// 年月、イベント名、ページURLを取得
		dimensions: [
			{name: 'yearMonth'},
			{name: 'eventName'},
			{name: 'UnifiedPagePathScreen'},
		],
		// イベント数を取得してPV数を取得する
		metrics: [
			{name: 'eventCount'}
		],
		// データを検索する期間を指定
		dateRanges: [
			// 日付の指定は '8daysAgo' とか 'yesterday' でもOK
			{
				startDate: START_DATE, // ←定数で定義した値
				endDate: END_DATE // ←定数で定義した値
			}
		],
		dimensionFilter: {
			andGroup: {
				expressions: [
					// イベント名がページビューのデータを指定
					{
						filter: {
							fieldName: "eventName",
							stringFilter: {
								value: "page_view"
							}
						}
					},
					// ページのURLを絞る
					{
						filter: {
							fieldName: "UnifiedPagePathScreen",
							stringFilter: {
								matchType: "CONTAINS",
								caseSensitive: true,
								value: SEARCH_URL, // ←定数で定義した値
							}
						}
					}
				]
			}
		},
		// 並び順を定義する
		orderBys: [
			{
				dimension: {
					dimensionName: "yearMonth"
				},
				desc: false
			},
		]
	};
	// GA4へリクエスト
	let report = getReport(request);
	let report_row = report.rows;
	if (!report_row || report_row <= 0) {
		console.log(' レポートデータが見つかりませんでした。');
		return ;
	}

	// リクエスト結果をデバッグ出力する
	console.log(report.rows[0].dimensionValues[0].value, report.rows[0].dimensionValues[2].value, report.rows[0].metricValues[0].value);

	// スプレッドシートを読み込む
	const sheet  = SpreadsheetApp.openById(SPREADSHEET_ID).getSheetByName(SHEET_NAME);
	// スプレッドシートへ書き込む
	let range = sheet.getRange('A1');
		range.setValue(report.rows[0].metricValues[0].value);
}

/**
 * レポートを取得
 * @memo https://developers.google.com/analytics/devguides/reporting/data/v1/rest/v1beta/properties/runReport?hl=ja
 * @param object request
 * @return object result
 */
function getReport(request = null)
{
  let result = [];
  try {
    result = AnalyticsData.Properties.runReport(request,'properties/' + GA4_PROPERTY_ID);
  } catch (e) {
    console.log('Failed with error: %s', e.error);
  }
  return result;
}

サンプルコードの解説

Google Apps Script(GAS)でGA4から「ページURLと期間を指定して月間PV数を取得する」サンプルコードの解説します。

定数の値を書き換える

ここの定数へGA4やスプレッドシートの情報を入力します。あとGA4から取得するページURLと期間もここで指定しています。

// GA4のプロパティID
const GA4_PROPERTY_ID = '*****';
// 書き込みするスプレッドシートのID
const SPREADSHEET_ID = '****-*****';
// 書き込みするシート名
const SHEET_NAME = '****';
// PVを取得するWebページのURL
const SEARCH_URL = '****';
// データを検索する期間
const START_DATE = '2023-01-01';
const END_DATE = '2023-01-31';
GA4_PROPERTY_ID

GA4画面の左メニュにある「管理」をクリック → プロパティ の 「プロパティ設定」をクリック → プロパティID の値

SPREADSHEET_ID

Googleスプレッドシートを開いた時のURL「https://docs.google.com/spreadsheets/d/********-******************」の値

GA4からデータを取得する項目や条件を指定

GA4からデータを取得する項目や条件を指定します。

dimensions

dimensionsで年月、イベント名、ページURLを取得するように指定します。

// 年月、イベント名、ページURLを取得
dimensions: [
	{name: 'yearMonth'},
	{name: 'eventName'},
	{name: 'UnifiedPagePathScreen'},
],
metrics

metricsでイベント数(PV数)を取得するように指定します。

// イベント数を取得してPV数を取得する
metrics: [
	{name: 'eventCount'}
],
dateRanges

dateRangesで取得するデータの期間を指定します。

// データを検索する期間を指定
dateRanges: [
	// 日付の指定は '8daysAgo' とか 'yesterday' でもOK
	{
		startDate: START_DATE, // ←定数で定義した値
		endDate: END_DATE // ←定数で定義した値
	}
],
dimensionFilter

dimensionFilterで取得するデータの条件を指定します。

dimensionFilter: {
	andGroup: {
		expressions: [
			// イベント名がページビューのデータを指定
			{
				filter: {
					fieldName: "eventName",
					stringFilter: {
						value: "page_view"
					}
				}
			},
			// ページのURLを絞る
			{
				filter: {
					fieldName: "UnifiedPagePathScreen",
					stringFilter: {
						matchType: "CONTAINS",
						caseSensitive: true,
						value: SEARCH_URL, // ←定数で定義した値
					}
				}
			}
		]
	}
},
orderBys

orderBysで取得するデータの並び順を指定します。
※今回でいえば1レコードしかデータが返ってこないので不要ですが、一応指定しています。

// 並び順を定義する
orderBys: [
	{
		dimension: {
			dimensionName: "yearMonth"
		},
		desc: false
	},
]

GA4からデータを取得する

GA4からデータを取得します。

function getReport(request = null)
{
  let result = [];
  try {
    result = AnalyticsData.Properties.runReport(request,'properties/' + GA4_PROPERTY_ID);
  } catch (e) {
    console.log('Failed with error: %s', e.error);
  }
  return result;
}

GA4から取得したデータをデバッグ出力する

GA4から取得したデータを console.log でデバッグ出力します。

// リクエスト結果をデバッグ出力する
console.log(report.rows[0].dimensionValues[0].value, report.rows[0].dimensionValues[2].value, report.rows[0].metricValues[0].value);

スプレッドシートへ書き出す

GA4から取得したデータをスプレッドシートへ書き出します。

// スプレッドシートを読み込む
const sheet  = SpreadsheetApp.openById(SPREADSHEET_ID).getSheetByName(SHEET_NAME);
// スプレッドシートへ書き込む
let range = sheet.getRange('A1');
	range.setValue(report.rows[0].metricValues[0].value);

まとめ

今回はGoogle Apps Script(GAS)を使ってGoogleアナリティクス4のデータを取得してスプレッドシートへ書き出すサンプルコードを解説しました。

サイト分析を行う上でGASを使うと自動で集計することが出来ます。またGASではスケジュール設定を行うことが出来て定期実行を行うこともできます。

最後までお読みいただきありがとうございます。

ユート
ユート

Webプログラマ兼ブロガー | プログラミング基礎知識を発信|Webプログラマ歴は10年以上|JavaScript,PHP.HTML | 「人生の時間は有限。悪いことをしている時間はない」
プロフィール

プログラムGoogle Apps Script,JavaScript

Posted by ユート