Google Analyticsデータを効率的に取得・ソートする方法
Google Analyticsはウェブサイトのトラフィックを分析するための強力なツールですが、大量のデータを効率的に処理するには、自動化が鍵です。ここでは、Google Apps Scriptを使用してGoogle Analyticsのデータを取得し、ページビュー(PV)の数でソートする方法について解説します。
スクリプトの概要
このスクリプトは、指定された期間内の全てのビューからページビュー数とセッション数を取得し、ページビュー数で降順にソートします。このスクリプトは特に、複数のウェブサイトやアプリを管理している場合に有用です。
コードの解説
- データ取得の設定: 最初に、取得する期間(
startDate
とendDate
)や、取得するメトリクス(metrics
)を設定します。 - データの取得: Google Analyticsのアカウント、プロパティ、ビューを順に取得し、各ビューからページビュー数とセッション数を取得します。
- エラーハンドリング: APIの利用制限に達した場合、一定時間待機してからリクエストを再試行します。
- ソート処理: 取得したデータを配列に保存し、ページビュー数でソートします。
- 結果の表示: ソートされたデータをログに出力します。
使用方法
- Google スプレッドシートを開き、「ツール」>「スクリプト エディタ」を選択します。
- スクリプト エディタに上記のコードを貼り付けます。
- スクリプトを実行するには、エディタ内で適切な関数を選択し、「実行」ボタンをクリックします。
- 初回実行時には、Google Analytics APIへのアクセス許可を求められるので、指示に従って許可します。
注意点
- Google Apps Scriptの実行時間制限(最大6分)がありますので、大量のデータを扱う場合は注意が必要です。
- スクリプトの実行頻度が高い場合、Google Analytics APIの利用制限に注意してください。
- Google Analyticsのアカウントに対する適切なアクセス権限が必要です。
このスクリプトを利用することで、Google Analyticsのデータをより効率的に分析し、ウェブサイトやアプリのパフォーマンス改善に役立てることができます。
Google Analytics APIから取得したデータをページビュー(PV)の数でソートするには、まずデータを配列やリストに保存し、その後にソート処理を行う必要があります。Google Apps ScriptではJavaScriptの配列操作メソッドを使用してこれを実現できます。
以下は、データを取得し、PVでソートするための改善されたサンプルコードです。
スクリプトの改善
function getAllViewsDataSortedByPageviews() {
var allData = [];
var startDate = '30daysAgo';
var endDate = 'today';
var metrics = 'ga:pageviews,ga:sessions';
var accounts = Analytics.Management.Accounts.list();
if (accounts.items && accounts.items.length) {
for (var i = 0; i < accounts.items.length; i++) {
var account = accounts.items[i];
var properties = Analytics.Management.Webproperties.list(account.id);
if (properties.items && properties.items.length) {
for (var j = 0; j < properties.items.length; j++) {
var property = properties.items[j];
var views = Analytics.Management.Profiles.list(account.id, property.id);
if (views.items && views.items.length) {
for (var k = 0; k < views.items.length; k++) {
var view = views.items[k];
try {
var report = Analytics.Data.Ga.get(
'ga:' + view.id,
startDate,
endDate,
metrics
);
var pageviews = report.totalsForAllResults['ga:pageviews'];
var sessions = report.totalsForAllResults['ga:sessions'];
allData.push({
viewId: view.id,
name: view.name,
property: property.name,
pageviews: parseInt(pageviews, 10),
sessions: parseInt(sessions, 10)
});
} catch (e) {
if (e.message.includes("Rate Limit Exceeded")) {
Utilities.sleep(10000); // 10秒待機
} else {
throw e;
}
}
}
}
}
}
}
}
// ページビューでソート
allData.sort(function(a, b) {
return b.pageviews - a.pageviews;
});
// ソートされたデータの表示
for (var l = 0; l < allData.length; l++) {
var data = allData[l];
Logger.log('View ID: ' + data.viewId + ', Name: ' + data.name + ', Property: ' + data.property + ', Pageviews: ' + data.pageviews + ', Sessions: ' + data.sessions);
}
}
注意事項
- このコードは、すべてのデータを取得した後にソート処理を行います。データ量が多い場合は、実行時間制限に注意してください。
parseInt
関数を使用して、ページビューとセッションの数値を整数に変換しています。これにより、数値として正しくソートできます。- APIの利用制限に達した場合には、10秒待機してから再試行します。これにより、制限によるエラーの影響を最小限に抑えることができます。
ぜひコメントを残していってください