こんにちは、タクトシステムマーケティングチームです。
2017年ごろ、タクトシステムのブログでGoogleアナリティクスの記事を公開しました。
Googleアナリティクスといっても当時はまだGA4はリリースされておらず、どちらの記事もユニバーサルアナリティクス(UA)についてのお話でした。時は流れて2023年7月、UAはサポートが終了となりGA4がGoogleアナリティクスのスタンダードとなりました。GA4はUAと比較して概念から仕様が変わったため、見方が難しく感じられてしまうかもしれませんが、数値が取得さえできれば解析することは同じです。
上記のブログ記事は古くなってしまったのでGA4向けに書き直した、というのが今回の記事の趣旨となります。
GA4(Googleアナリティクス4)について
Googleアナリティクスは最も普及している解析ツール
ウェブサイトにおけるアクセス解析にはさまざまなツールがありますが、現在はGoogleアナリティクスが最も普及※しています。基本的に無料ということもあり、アクセス解析ツールの主流といえます。
データにもとづいて結果と原因との相関関係を把握することで、ビジネス目標に貢献できます。

Googleアナリティクスは最も普及している解析ツール
※日本の上場企業を対象にした定点観測調査。
日本の上場企業のウェブサイト 3,959社分のうちGoogle アナリティクス導入数は3,015社(76.2%:2023/7/23調査)
http://uehama.blogspot.com/2023/07/723-google-analytics-762.html
Googleアナリティクス:UAとGA4のちがい
GA4 は2020年にGoogleからリリースされたアクセス解析ツールで、正しくは Googleアナリティクス4 といいます。
「Googleアナリティクス」の名を冠していますがユニバーサルアナリティクス(UA)とは別物です。なお、UAは2023年7月1日にサポートが終了し、その役目を終えました。
GoogleはGA4を「測定ツールの将来を見据えて設計された新しいプロパティ」と位置づけています。これには、UAの機能では詳細なアクセス解析がむずかしくなったことで設計をイチから作り直した、という背景があります。
Googleスプレッドシートアドオンを使用する
ここでは、Googleスプレッドシート アドオンについて解説します。
GA4 Reports Builder
GoogleスプレッドシートにはGoogleアナリティクスのデータを展開できるアドオンがあります。 GA4 Reports Builder はそのひとつGoogle純正のアドオンで、UAにもあったアドオンのGA4版です。ChromeなどのウェブブラウザでアドオンのURLにアクセスして インストール ボタンを押せばインストール完了です。
GA4 Reports Builderの使い方は、メニューバーから [拡張機能] > GA4 Reports Builder for Google Analytics™ > Create new report を選択します。UAにもあったアドオンと使い方は同じです。
メニューバーからアドオンを選択すると画面の右側にサイドバーがあらわれます。サイドバーにはGoogleアナリティクスのアカウント/プロパティ情報を選択するプルダウンと、計測の開始日と終了日を入力するボックスが表示されます。
男女比レポートを作成
まずは試しに、アクセスしてきたユーザー数を性別ごとに取得してみます。
Report nameテキストボックスに「男女比」と入力し、Accountでウェブサイトのアカウントを、PropertyでGA4プロパティを選択します。Start dateとEnd dateはそれぞれ計測の開始日と終了日を日付(specific date)、または「today」「yesterday」といった日付リテラルで入力します。「NdaysAgo」を選択すると数値入力ボックスが表示されるので、任意の数値で開始日および終了日が指定できます。
Dimensionsはディメンション、直訳すると寸法や範囲、規模といった意味となりますが、Googleアナリティクスではデータの属性をあらわします。ここでは性別をあらわすディメンションである「userGender」をプルダウンより選択します。
Metricsはデータを定量化した指標のことです。GA4ではユーザー数をあらわす指標が複数ありますが、ここでは総ユーザー数をあらわす指標である「totalUsers」をプルダウンより選択します。
Dimension filtersも設定します。男女以外に性別不明(Unknown)なユーザーも取得してしまうためです。
各ボックスには下記のように入力します。
| Dimension | Gender | 
| Filter type | string | 
| Match type | regexp | 
| Value | (fe)*male | 
上記のように入力することで「文字列の結果がfemaleまたはmaleのみを値で取得する正規表現フィルター」が設定できます。
Metric filtersの設定は不要です。
入力が完了した状態で Create Report ボタンを押すと、Report Configurationという名前のシートにレポート情報が表示されます。
これで設定は完了です。
レポートを実行しデータを取得するには、メニューバーから [拡張機能] > GA4 Reports Builder for Google Analytics™ > Run reports を選択します。
Run reportsを実行するとダイアログに結果ステータスが表示されます。
成功(または失敗)したレポート数が表示されます。
設定で指定したReport nameの名前でシートが作成され、このシート14行目「Results Breakdown」以下に、設定したディメンションと指標を組み合わせた結果が表示されます。
ディメンションuserGenderが性別を、指標totalUsersが合計ユーザー数をあらわします。この例では female(女性)と male(男性)がそれぞれ何人いるのかがわかります。
ちなみに、「userGender」「totalUsers」とはAPI上での表記方法です。詳細な定義はAPIリファレンスを参照してください。
男女比の円グラフを作成
そしてこの男女比の結果データをもとに円グラフをつくってみます。表示セル範囲を選択して、メニューバーから [挿入] > グラフ を選択します。このあたりはExcelの操作に似ています。
メニューバーから [挿入] > グラフ を選択すると、シート上に円グラフが配置されます。
グラフはGoogleスプレッドシート上の図なのでさらに編集したり、画像やPDF/SVG形式でダウンロードしたり、個別のシートに移動したりすることが可能です。
アドオンのSchedule Reportsで定期的な更新を指定すれば、その都度データを取得しながらグラフも更新されます。
アドオンの雑感
アドオンを使用するとGoogleスプレッドシートでGoogleアナリティクスのデータを取得できるので、数値を保存する必要がある場面では活躍しそうです。しかし、GA4 Reports Builderの設定は煩雑で、機能的に不十分でもあります。たとえば、ソート(OrderBy)設定は設定画面はあるものの、機能が実装されていない(?)のか反映できないといった課題もあります。
その意味ではサードパーティの GA4 Magic Reports の方が、ほぼ同じ使い勝手でなおかつ高機能なので、GA4 Reports Builderよりは使いやすい印象です。
AnalyticsData APIで自動化
Googleスプレッドシートとアドオンを使用してGoogleアナリティクスのデータを取得する方法について書きましたが、違ったアプローチでGoogleアナリティクスのデータ取得をおこないます。
開発者向けのツール AnalyticsData API を活用してGA4のレポートデータにアクセスしてみます。
言語はGoogle Apps Scriptです。
Google Apps Scriptを使用
では、アクセスのあったユーザー数を性別ごとにAnalyticsData APIで取得してみます。
GoogleスプレッドシートでGoogle Apps Scriptを使用するには、メニューバーから [拡張機能] > Apps Script を選択します。すると、プロジェクト編集画面が表示されます。
AnalyticsData APIをサービスに追加
プロジェクト編集画面へコードを入力する前に、Google Apps ScriptでAnalyticsData APIをサービスに追加します。
- プロジェクト左端の「サービス」より「+(サービスを追加)」を押す
- サービス追加画面が表示されるのでリストより「AnalyticsData API」を選択し追加ボタンを押す
- サービスにAnalyticsData APIが追加される
コードを入力
Google Apps ScriptでAnalyticsData APIをサービスに追加したら、プロジェクト編集画面にコードを入力します。
下記に男女比を取得するサンプルコードを記載しておきます。
function getGenderUsers() {
  const propertyId = 'YOUR-GA4-PROPERTY-ID';
  // 指標
  const metric = AnalyticsData.newMetric();
  metric.name = 'totalUsers';
  // ディメンション
  const dimension = AnalyticsData.newDimension();
  dimension.name = 'userGender';
  // 計測する範囲
  const dateRange = AnalyticsData.newDateRange();
  dateRange.startDate = 'yesterday';
  dateRange.endDate = 'yesterday';
  // ディメンションフィルター
  const dimensionFilter = AnalyticsData.newFilterExpression();
  const orGroup = AnalyticsData.newFilterExpressionList();
  const filter = AnalyticsData.newFilter();
  filter.fieldName = 'userGender';
  filter.stringFilter = AnalyticsData.newStringFilter();
  filter.stringFilter.matchType = 'FULL_REGEXP';
  filter.stringFilter.value = '(fe)*male';
  const filterExpression = AnalyticsData.newFilterExpression();
  filterExpression.filter = filter;
  orGroup.expressions = [filterExpression];
  dimensionFilter.orGroup = orGroup;
  // リクエスト
  const request = AnalyticsData.newRunReportRequest();
  request.dimensions = [dimension];
  request.metrics = [metric];
  request.dateRanges = dateRange;
  request.dimensionFilter = dimensionFilter;
  // リクエストを実行してレポートを取得
  const report = AnalyticsData.Properties.runReport(request, 'properties/' + propertyId);
  if (!report.rows) {
    return;
  }
  // アクティブなスプレッドシート
  const spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
  // アクティブなシート
  const sheet = spreadsheet.getActiveSheet();
  // シートの内容をクリア
  sheet.getDataRange().clearContent();
  // ヘッダーを追加
  const dimensionHeaders = report.dimensionHeaders.map(
      (dimensionHeader) => {
        return dimensionHeader.name;
      });
  const metricHeaders = report.metricHeaders.map(
      (metricHeader) => {
        return metricHeader.name;
      });
  const headers = [...dimensionHeaders, ...metricHeaders];
  sheet.appendRow(headers);
  // 取得したレポート結果を追加
  const rows = report.rows.map((row) => {
    const dimensionValues = row.dimensionValues.map(
        (dimensionValue) => {
          return dimensionValue.value;
        });
    const metricValues = row.metricValues.map(
        (metricValues) => {
          return metricValues.value;
        });
    return [...dimensionValues, ...metricValues];
  });
  sheet.getRange(2, 1, report.rows.length, headers.length).setValues(rows);
}
記載したコードはAnalytics Data Serviceのサンプルコードを流用して改修しています。
Googleアナリティクス4の プロパティID(propertyId) を入力してコードを実行すると、前日の男女別合計ユーザー数がGoogleスプレッドシートのアクティブシートに書き出されます。
指標やディメンションについての詳細な定義はAPIリファレンスを参照してください。
まとめ
Googleスプレッドシートには「自動化」する方法が多くありますが、アクセス解析に関してはLooker Studioなど優れたツールが多くあります。アドオンはGoogleアナリティクスのデータをノーコードで取得できるメリットはありますが、APIにアクセスしているため深掘りすると仕様に限界があると感じます。
AnalyticsData APIはアイデア次第でさまざまな処理でアクセス解析の利便性を高めることが可能です。たとえば、前日のページビュー数やユーザー数、コンバージョン数などのデータをGA4より取得して毎日決まった時間に日次レポートとして自動送信をおこなうといったことができます。この日次レポートを自動送信する方法については別のお役立ち資料でご紹介しています。
あわせて読みたい

【お役立ち資料】
Googleスプレッドシートでアクセス解析を自動化【GA4編】
まえがき/GA4(Googleアナリティクス4)について/GA4アクセス解析の手法/Googleスプレッドシートアドオンを使用する/AnalyticsData APIで自動化/ 限定記事 :日次レポートを自動送信/まとめ
なお、Googleアナリティクスのデータを取得してChatGPTでアクセス解析のコメントを述べてもらうようにした「高度な合わせ技」についての記事もありますので、よろしければ参考にしてください。
\うまくいかないWeb集客にお悩みなら/

BtoBビジネスのオンライン集客が飛躍的に改善
Webサイトの制作から運用まで安心のトータルサポート
お客様の課題勘に合わせ、
5つのソリューションでデジタルマーケティング活動のすべてを伴走サポートします。
コンサル型Webサイト構築 / デジタルマーケティングコンサル
Webコンテンツ制作 / MA導入・運用支援 / Webマーケター育成支援














![[挿入] > グラフ を選択](https://www.tactsystem.co.jp/blog/wp-content/uploads/2024/07/spreadsheet_ga4_13.png)


![[拡張機能] > Apps Script を選択するとプロジェクト編集画面が表示される](https://www.tactsystem.co.jp/blog/wp-content/uploads/2024/07/spreadsheet_ga4_16.png)




