Google Analyticsと連携したGASアプリでPV数を自動集計する完全ガイド

 

Webサイト運営において、ページビュー(PV)数の定期的な分析は欠かせません。しかし、Google Analyticsの管理画面から毎回データをエクスポートするのは時間のかかる作業です。

この記事では、Google Apps Script(GAS)とGoogle Analytics 4(GA4)を連携させて、PV数を自動集計するアプリの作成方法を詳しく解説します。

なぜGASでPV数集計を自動化するのか?

手動集計の課題

  • Google Analyticsでの手動エクスポートに時間がかかる
  • 定期レポート作成が面倒
  • 複数サイトの管理が困難
  • データの一貫性が保てない

GAS自動化のメリット

  • 完全自動化: 指定した日時に自動実行
  • カスタマイズ可能: 必要なデータのみ抽出
  • スプレッドシート連携: Excelライクな操作で分析可能
  • 無料: Googleアカウントがあれば追加費用なし

実装の全体像

今回作成するGASアプリの仕様:

  • A列: サイトURL
  • B列: ページタイトル
  • C列: 指定期間(30日間)のPV数
  • 期間指定: C1セルの日付から過去30日間
  • 全ページ対応: サイトの全ページを自動取得

事前準備:必要な設定

1. Google Analytics Data APIの有効化

まず、Google Cloud ConsoleでAPIを有効にします。

  1. Google Cloud Consoleにアクセス
  2. プロジェクトを選択(新規作成も可)
  3. 「APIとサービス」→「ライブラリ」
  4. “Google Analytics Data API”を検索
  5. 「有効にする」をクリック

2. GA4プロパティIDの確認

Google Analytics 4で以下の手順でプロパティIDを確認:

  1. GA4管理画面の「管理」をクリック
  2. 「プロパティ設定」を選択
  3. プロパティIDをコピー(数字のみ)

GASコードの実装

基本設定

// 設定項目
const PROPERTY_ID = 'YOUR_GA4_PROPERTY_ID'; // ←ここにプロパティIDを入力
const SHEET_NAME = 'Analytics Data';

メイン処理の実装

function fetchGA4DataToSheet() {
  try {
    const spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
    let sheet = spreadsheet.getSheetByName(SHEET_NAME);
    
    if (!sheet) {
      sheet = spreadsheet.insertSheet(SHEET_NAME);
    }
    
    // C1セルから基準日を取得
    const targetDate = getTargetDate(sheet);
    const headerDate = Utilities.formatDate(targetDate, Session.getScriptTimeZone(), 'yyyy/MM/dd');
    
    // ヘッダー設定
    sheet.getRange(1, 1, 1, 3).setValues([
      ['サイトURL', 'サイトタイトル', `${headerDate}から過去30日間のPV数`]
    ]);
    
    // GA4からデータ取得
    const analyticsData = getGA4Data(targetDate);
    
    if (analyticsData && analyticsData.length > 0) {
      // データを書き込み
      sheet.getRange(2, 1, analyticsData.length, 3).setValues(analyticsData);
      formatSheet(sheet, analyticsData.length);
      
      console.log(`データ取得完了: ${analyticsData.length}件`);
    }
    
  } catch (error) {
    console.error('エラー:', error.toString());
    throw error;
  }
}

全ページ取得機能

大量のページがあるサイトでも対応できるよう、ページネーション機能を実装:

function getGA4Data(targetDate) {
  let allResults = [];
  let offset = 0;
  const limit = 10000;
  let hasMoreData = true;
  
  while (hasMoreData) {
    const request = {
      property: `properties/${PROPERTY_ID}`,
      dateRanges: [{
        startDate: formattedStartDate,
        endDate: formattedEndDate
      }],
      dimensions: [
        { name: 'pagePath' },
        { name: 'hostName' },
        { name: 'pageTitle' }
      ],
      metrics: [{ name: 'screenPageViews' }],
      orderBys: [{
        metric: { metricName: 'screenPageViews' },
        desc: true
      }],
      limit: limit,
      offset: offset
    };
    
    const response = AnalyticsData.Properties.runReport(request, `properties/${PROPERTY_ID}`);
    
    if (!response.rows || response.rows.length === 0) {
      hasMoreData = false;
      break;
    }
    
    // データ整形して配列に追加
    const batchResults = response.rows.map(row => {
      const fullUrl = `https://${row.dimensionValues[1].value}${row.dimensionValues[0].value}`;
      const pageTitle = row.dimensionValues[2].value;
      const pageViews = parseInt(row.metricValues[0].value);
      
      return [fullUrl, pageTitle, pageViews];
    });
    
    allResults = allResults.concat(batchResults);
    offset += limit;
    
    // APIレート制限対策
    Utilities.sleep(100);
  }
  
  return allResults;
}

使用方法

1. 初回設定

  1. Google Apps Scriptで新しいプロジェクトを作成
  2. 「サービス」から “Google Analytics Data API” を追加
  3. 上記コードを貼り付け
  4. PROPERTY_IDに自分のGA4プロパティIDを設定

2. データ取得の実行

  1. C1セルに基準日を入力

    例:2024/07/01
    
  2. スクリプト実行

    fetchGA4DataToSheet()
    
  3. 結果確認

    • A列:各ページのURL
    • B列:ページタイトル
    • C列:指定期間のPV数

3. 自動実行の設定

定期的にデータを更新したい場合は、トリガーを設定:

function createDailyTrigger() {
  ScriptApp.newTrigger('fetchGA4DataToSheet')
    .timeBased()
    .everyDays(1)
    .atHour(9)
    .create();
}

活用アイデア

SEO分析での活用

  • 人気ページの特定: PV数上位ページの傾向分析
  • コンテンツ改善: 低PVページの原因調査
  • 競合比較: 複数サイトのPV数比較

レポート作成での活用

  • 定期レポート: 週次・月次レポートの自動生成
  • KPI管理: 目標PV数との比較分析
  • トレンド分析: 期間を変えた推移確認

マーケティング活用

  • コンテンツ戦略: 人気コンテンツの特徴分析
  • リソース配分: 効果的なページへの集中投資
  • ROI測定: コンテンツ制作コストとPV数の関係性

トラブルシューティング

よくあるエラーと対処法

403エラー(権限不足)

対処法:
- Google Analytics Data APIが有効になっているか確認
- GA4プロパティへのアクセス権限を確認

404エラー(プロパティが見つからない)

対処法:
- プロパティIDが正しく設定されているか確認
- GA4(UA)ではなくGA4のプロパティIDか確認

データが取得できない

対処法:
- 指定期間にアクセスがあるか確認
- GA4のデータ反映には24-48時間かかることを考慮

高度なカスタマイズ

複数指標の取得

PV数以外の指標も同時に取得したい場合:

metrics: [
  { name: 'screenPageViews' },      // PV数
  { name: 'sessions' },             // セッション数
  { name: 'bounceRate' },           // 直帰率
  { name: 'averageSessionDuration' } // 平均セッション時間
]

フィルタリング機能

特定のページのみを対象にする場合:

dimensionFilter: {
  filter: {
    fieldName: 'pagePath',
    stringFilter: {
      matchType: 'CONTAINS',
      value: '/blog/'  // ブログページのみ
    }
  }
}

まとめ

Google Apps ScriptとGoogle Analytics 4を連携させることで、PV数の集計作業を完全に自動化できます。

この方法のメリット:

  • 手作業の時間を大幅削減
  • データの一貫性確保
  • カスタマイズの自由度が高い
  • 無料で利用可能

導入の流れ:

  1. Google Analytics Data APIの有効化
  2. GASコードの実装
  3. プロパティIDの設定
  4. 定期実行トリガーの設定

特に複数サイトを運営している場合や、定期的なレポート作成が必要な場合には、大幅な作業効率化が期待できます。

ぜひこの記事を参考に、自動化によるデータ分析の効率化を実現してください。データに基づいた意思決定で、より効果的なWeb運営を目指しましょう。


この記事で紹介したコードは、Google Analytics 4 Data API v1に基づいています。APIの仕様変更に応じて、適宜アップデートしてご利用ください。

■プロンプトだけでオリジナルアプリを開発・公開してみた!!

■AI時代の第一歩!「AI駆動開発コース」はじめました!

テックジム東京本校で先行開始。

■テックジム東京本校

「武田塾」のプログラミング版といえば「テックジム」。
講義動画なし、教科書なし。「進捗管理とコーチング」で効率学習。
より早く、より安く、しかも対面型のプログラミングスクールです。

<短期講習>5日で5万円の「Pythonミニキャンプ」開催中。

<月1開催>放送作家による映像ディレクター養成講座

<オンライン無料>ゼロから始めるPython爆速講座