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ではスケジュール設定を行うことが出来て定期実行を行うこともできます。
最後までお読みいただきありがとうございます。
ディスカッション
コメント一覧
まだ、コメントがありません