Open3

(WIP)GA4の日々のアクセス情報を、GolangでAPIを用いて取得する

yunayuna

やりたいこと

Golangを用いて、GA4の情報に日次でアクセスして、当日のアクセスレポートをメールで送信する。
プロダクトサイトのアクセス情報という重要な指標を強制的に目にすることで、課題を意識させ改善につなげる目的です。

APIを使って情報取得する部分について、初めて実施するのでメモしていきます。

参考にさせていただいた記事、コード

https://zenn.dev/chot/articles/b0a00dd7dae2b4
https://github.com/hirokisan/ga4data/tree/main
https://zenn.dev/chocolat0w0/articles/dfce1a1d3226a9

20240908時点のGA4 Adminの公式ガイド
https://developers.google.com/analytics/devguides/collection/ga4?hl=ja

yunayuna

①準備編

Analyticsに関するAPIは、紛らわしいですが
Google Analytics Admin APIと、Google Analytics Data Api の2種類があります。
アクセス情報などのレポートが欲しい場合に使うのは、Google Analytics Data Apiです。

https://console.cloud.google.com/apis/api/analyticsadmin.googleapis.com/metrics?project=xxxxxxx

※※Admin APIは、アカウント情報などの操作に使うようです。Admin APIはこちら
https://console.cloud.google.com/apis/api/analyticsdata.googleapis.com/metrics?project=xxxxxxx

Google Cloudのcredentialと参照したいanalyticsのプロパティを紐付ける

credentials.jsonを開いてclient_emailフィールドのメールアドレスを、
Google Analyticsの取得したいプロパティの「プロパティのアクセス管理」に追加します。

※正しく紐付いているか否かは、analyticsadminの方のAPIで、コードから確認することができます。
 紐付いていないと、Account lenは0が返ってきます。

import(
   analyticsadmin "google.golang.org/api/analyticsadmin/v1beta"
)
func main() {
  ctx := context.Background()
	analyticsAdminService, err := analyticsadmin.NewService(ctx, option.WithCredentialsFile("/path/to/credentialFile.json"))
    //環境変数 GOOGLE_APPLICATION_CREDENTIALSに、credentialFileのパスを指定していればこれでもOK
	//analyticsadminService, err := analyticsadmin.NewService(ctx)

	res, err := analyticsAdminService.Accounts.List().Do()
	log.Println("account len:", len(res.Accounts))
}

出力

account len: 1
yunayuna

②実装編

引き続き、プログラム実装部分について、
進めていきます。

こちらを利用。

go get google.golang.org/api/analyticsdata/v1beta

今回使ったAPI
https://pkg.go.dev/google.golang.org/api/analyticsdata/v1beta

細かく記述しようと思ったが、基本的にこちらのコードの通りに進めれば取得できますので、
続きは保留とします。
https://github.com/hirokisan/ga4data/tree/main