2021年3月23日
マーケティング
Google Analyticsの新バージョン!「Google Analytics 4(GA4)」のレポートデータをRubyで取得する


はじめに
2005年からリリースされているGoogle社の無料アクセス解析ツール「Google Analytics(GA))」が、2020年10月に新バージョンの「Google Analytics 4(以下「GA4」)」をリリースしました。
リリースに伴いアナリティクスのページや考え方も変わったので、Google Analytics Data APIでのデータ取得方法も変わったようです。
この記事ではRubyを使用してGA4のレポートデータの取得方法を紹介していきます!
導入
GA4で何が変わった?
GA4は次世代のGoogle Analyticsと呼ばれています。
今までのGAは「ページ」単位という考え方から「滞在率」、「直帰率」というよう分析を行うことができました。
しかし、アプリのようなページの概念のないものから、SPAのようなページ遷移を行わずコンテンツを切り替えるようなサイトが現れてからは「ページ」単位での解析では追いつかないようになっていました。
そこでリリースされたのがGA4です!ベータ版の時の名称は「アプリ + ウェブプロパティ」といい、アプリにもウェブにも対応したデータを組み合わせることで分析ができるようになりました。
またGA4では、そのページで何をしたかという「イベント」という考え方が重要になってきます。GA4上ではページビューもひとつの「イベント」という扱いになります。
Google Analytics Data APIとは?
GAのデータを取得できるAPIで、GAのレポートのデータにプログラムを使ってアクセスすることができます。
データを自分が見たいように自由にカスタムできたり、自分のWebページにアクセス数を表示したりなど柔軟にGAデータを活用することができます。
多く使われている人気プログラミング言語では「Google API クライアントライブラリ」が使用でき、ライブラリを使用すれば、API を簡単に使用できるようになります!
Google Analytics Data APIの取得方法
では、早速Rubyを使用してGA4のデータを取得してみましょう。Rubyを使う場合、gemで簡単にデータを取得することができます。
導入手順
GoogleAPIを叩くクライアント用のgemはいくつかあるのですが、GA4の公式APIクイックスタートに記載されている「google-analytics-data-v1alpha」を使います。
以下、GoogleAPI公式ドキュメントを参考にRailsアプリに導入していきます。
前提としてGA4のプロジェクトは作成ずみのものとします。
未作成の場合はGAプロジェクト作成手順を基に作成します。
環境
- Ruby 2.6.6(2.5.0以上推奨)
- Rails 6.0.3
1. gemのインストール
Gemfileに以下を追加しbundle install
をします。
gem install google-analytics-data-v1alpha
2. Google Cloud Platform(GCP)でプロジェクトを作成する
こちらから作成できます。詳しい手順はGCP公式ドキュメントを参考にします。
また、作成したプロジェクトの課金を有効にします。
3.作成したプロジェクトのGoogle APIs から、サービスアカウント認証情報を登録して、JSON ファイルを取得する
APIとサービス>認証情報>認証情報を作成をクリックします。
サービスアカウントを選択して名前をつけて保存を押すとアカウントが作成されます。
作成されたアカウントをクリックし、詳細>キーのタブをクリックし、鍵を追加>新しい鍵を追加と進み、JSONを選択して作成しキーファイルをダウンロードします。
中身は以下のようにとなっています。
ダウンロードしたJSONファイルは、ライブラリがAPIリクエストを認証するために使用するので、安全な場所に保存して下さい。
5. 作成したプロジェクトでGoogle Analytics Data APIを有効化する
こちらから有効化します。
6. GAプロジェクトにサービスアカウントをユーザー追加
GAのプロジェクトページにて管理(左サイドバーの歯車マーク)>アカウントユーザーの管理>アカウントの権限から作成したサービスアカウントのメールアドレスを入力しユーザーを追加します。
7. GA4のアカウントIDを控える
プロジェクトページにて管理>アカウント設定からアカウントIDを控えます。
以上が導入までの手順となります。次にデータを取得するサンプルソースは以下になります。
サンプルソース
環境変数
作成したjsonキーを保存したパスを「ANALYTICS_CREDENTIALS」という環境変数に入れ、.envファイルに記入します。
ディメンションとメトリクス
取得したいディメンションとメトリクスは
Analytics DataAPIクエリでサポートされているディメンションと指標を参考に設定します。
ディメンションとメトリクスについてはこちら。
今回は昨日のURLごとのページビューを取得していこうと思います。
ソース
require "google/analytics/data/v1alpha"
require 'date'
def execute
ga = ::Google::Analytics::Data::V1alpha
client = ga::AnalyticsData::Client.new
# 昨日の日付の開始から終了までのデータ
yesterday = Date.yesterday.strftime('%Y-%m-%d')
entity = ga::Entity.new(property_id: "任意のGAアカウントID" )
# screenPageViews(旧ページビューと同じデータ取得できる)を指定
metric = ga::Metric.new(name: 'screenPageViews')
# ディメンションはページのURLごとに取得
dimension = ga::Dimension.new(name: 'pagePathPlusQueryString')
date_range = ga::DateRange.new(start_date: yesterday, end_date: yesterday)
# リクエストを生成
request = ga::RunReportRequest.new(
metrics: [metric],
entity: entity,
dimensions: [dimension],
date_ranges: [date_range],
)
# レスポンスを取得する
response = client.run_report(request)
end
結果
responseには以下のデータが入ってきています。
Google::Analytics::Data::V1alpha::RunReportResponse: dimension_headers: [<google::analytics::data::v1alpha::dimensionheader: name:"pagepath"="">],
metric_headers: [<google::analytics::data::v1alpha::metricheader: name:="viewspersession" ,="" type:="" :type_float="">],
rows: [
<google::analytics::data::v1alpha::row: dimension_values="" :[<google::analytics::data::v1alpha::dimensionvalue:="" value="sample/url/pages">], metric_values: [<google::analytics::data::v1alpha::metricvalue: value:="1014">],...],
metric_values: [<google::analytics::data::v1alpha::metricvalue: value:"1"="">]], totals: [], maximums: [], minimums: [], row_count: 28, meta
data: <google::analytics::data::v1alpha::responsemetadata: data_loss_from_other_row:="" false="">></google::analytics::data::v1alpha::responsemetadata:></google::analytics::data::v1alpha::metricvalue:></google::analytics::data::v1alpha::metricvalue:></google::analytics::data::v1alpha::row:></google::analytics::data::v1alpha::metricheader:></google::analytics::data::v1alpha::dimensionheader:>
無事GA4のデータが取れました!
まとめ
新しくなったGAでよりユーザーの行動に沿った分析ができるようになったので、サービスの向上にどんどん役立てていきたいですね!
また、GA4の情報はかなり少なく自分自身とても困ったので、参考にしていただければと思います!
Google Analyticsのお仕事に関するご相談
Bageleeの運営会社、palanではGoogle Analyticsに関するお仕事のご相談を無料で承っております。
zoomなどのオンラインミーティング、お電話、貴社への訪問、いずれも可能です。
ぜひお気軽にご相談ください。
この記事は
参考になりましたか?
1
0
関連記事
簡単に自分で作れるWebAR
「palanAR」はオンラインで簡単に作れるWebAR作成ツールです。WebARとはアプリを使用せずに、Webサイト上でARを体験できる新しい技術です。
palanARへ
palanでは一緒に働く仲間を募集しています
正社員や業務委託、アルバイトやインターンなど雇用形態にこだわらず、
ベテランの方から業界未経験の方まで様々なかたのお力をお借りしたいと考えております。
運営メンバー

Eishi Saito 総務
SIerやスタートアップ、フリーランスを経て2016年11月にpalan(旧eishis)を設立。 マーケター・ディレクター・エンジニアなど何でも屋。 COBOLからReactまで色んなことやります。
sasakki デザイナー
アメリカの大学を卒業後、日本、シンガポールでデザイナーとして活動。

やまかわたかし デザイナー
フロントエンドデザイナー。デザインからHTML / CSS、JSの実装を担当しています。最近はReactやReact Nativeをよく触っています。
Sayaka Osanai デザイナー
Sketchだいすきプロダクトデザイナー。シンプルだけどちょっとかわいいデザインが得意。 好きな食べものは生ハムとお寿司とカレーです。

はらた エンジニア
サーバーサイドエンジニア Ruby on Railsを使った開発を行なっています

こぼり ともろう エンジニア
サーバーサイドエンジニア。SIerを経て2019年7月に入社。日々学習しながらRuby on Railsを使った開発を行っています。

ささい エンジニア
フロントエンドエンジニア WebGLとReactが強みと言えるように頑張ってます。

Damien
WebAR/VRの企画・開発をやっています。森に住んでいます。

ゲスト bagelee

かっきー

まりな

suzuki
miyagi

ogawa
雑食デザイナー。UI/UXデザインやコーディング、時々フロントエンドやってます。最近はARも。

いわもと
デザイナーをしています。 好きな食べ物はラーメンです。

taishi kobari
フロントエンドの開発を主に担当してます。Blitz.js好きです。

kubota shogo
サーバーサイドエンジニア。Ruby on Railsを使った開発を行いつつ月500kmほど走っています!
nishi tomoya

aihara
グラフィックデザイナーから、フロントエンドエンジニアになりました。最近はWebAR/VRの開発や、Blender、Unityを触っています。モノづくりとワンコが好きです。
nagao
SIerを経てアプリのエンジニアに。xR業界に興味があり、unityを使って開発をしたりしています。

Kainuma
サーバーサイドエンジニア Ruby on Railsを使った開発を行なっています

sugimoto
asama
ando
iwasawa ayane

oshimo
異業界からやってきたデザイナー。 palanARのUIをメインに担当してます。 これからたくさん吸収していきます!