初記事です!
正直、苦労しすぎたので、同じ苦しみを味わう方が少しでも減ればという想いで書きます。よろしくお願いします!
!注意!
- 利用したのは旧式のAnalyticsではなくGA4です。
- GA4はアップデートが激しいため、この通りにコードを書いても、数カ月後には動かない可能性があります。あくまでも現時点では、ということをご理解ください。
使うAPIとGem
- Analytics Data API
https://developers.google.com/analytics/devguides/reporting/data/v1 - google-apis-analyticsdata_v1beta
https://github.com/googleapis/google-api-ruby-client/blob/main/docs/usage-guide.md
【前提というか自戒】
公式ドキュメントやGemの中身はきちんと読みましょう。特にGem。公式ドキュメントは更新にラグがあり、今回はかなり苦しめられました。
もしこの方法が使えなくなっても、Gem読めばたぶん、なんとかなると思います。
準備
-
アカウントの準備
リクエストするアカウントの作成については他の方々も書いてあるので割愛。旧式AnalyticsのAPIのときと一緒です。OAuth2.0認証のアカウント作って、JSONをダウンロードしておく。GA4の場合も、Analytics側で作成したアカウントのアクセスを許可しておく必要があるので、そこだけ注意です。 -
gemの準備
旧式APIの記事では「google-api-client」と書いている人もいますが、現時点で公式から止めろと言われています。重すぎるし、もう更新しないからそれぞれ欲しいGemを利用するように、とのこと。
gem 'google-apis-analyticsdata_v1beta'
実際に呼び出す
# 必要な機能を呼び出す
require "google/apis/analyticsdata_v1beta"
require 'googleauth'
# アカウントを準備
scope = "https://www.googleapis.com/auth/analytics.readonly"
authorizer = Google::Auth::ServiceAccountCredentials.make_creds(
json_key_io: File.open('ダウンロードしたJSONファイルのパス'),
scope: scope
)
client = Google::Apis::AnalyticsdataV1beta::AnalyticsDataService.new
client.authorization = authorizer
# リクエストを作る。これは一例です。
body = {
"requests": [
{
"date_ranges": [
{
"start_date": "7daysAgo",
"end_date": "today"
}
],
"dimensions": [
{
"name": "pageTitle"
}
]
}
]
}
request = Google::Apis::AnalyticsdataV1beta::BatchRunReportsRequest.new(body)
# 引数の準備
property_id = '自分のGA4のID(数字)'
property = "properties/#{property_id}"
# Apiを叩く
@response = client.batch_property_run_reports(property, request)
これでリクエストが通るはずです。これはすぐにできるリクエストの書き方ですが、実際にはGemに書かれた通りに「DateRange」のようなリクエスト用クラスをそれぞれ作成して引数に入れるのが良いと思います。
余談
特に苦しめられたのが「scope」。公式ドキュメントのscope一覧にData APIのscope先は書かれていません!!さんざん、飛び回って探したら、こんなところにひょろっと書かれていました。
https://developers.google.com/analytics/devguides/reporting/data/v1/rest/v1beta/properties/batchRunReports
今回、学んだことですがGoogleの公式ドキュメントみたいに巨大で更新がバラつく場合は「キーワード site:url」で探した方が確実ですね。。
あとリクエストの書き方!!!最初は公式にあった「dateRanges」と書いていたら読み込んでくれませんでした。こちらもgemの引数にあった「date_rages」でようやく。。。(Gemのコードも数千行あるので、メソッドをいちいち正直探すの億劫がったら余計に痛い目をみました。)
もちろん、どちらもGemには書かれているので、面倒臭がらず一つ一つ読んでいればすぐに解決していたはずです。反省。でも勉強になりました。
GA4の日本語情報は少なすぎると思うので、血眼になってネット上を探してしまいますが(特に自分のようにスキルに自信がないと)、大事なことはコードに書いてある、と痛感しました。
初記事のため説明下手で恐縮ですが、誰かの助けになると幸いです。