読者です 読者をやめる 読者になる 読者になる

go langからGoogle Analytics APIを使う

golang ga

こちらの記事↓ではSpring Boot + kotlinからの利用方法でしたがgoからの利用も調査しました。

Spring Boot + kotlinでGoogle Analytics APIを使ってみた - 平日インプット週末アウトプットぶろぐ

簡易的なデータの取り方を確認できたので記載。

main.go

package main

import (
	"fmt"
	"log"
	"os"

	"golang.org/x/oauth2"
	"golang.org/x/oauth2/google"
	analytics "google.golang.org/api/analytics/v3"
)

func main() {

	client, err := google.DefaultClient(
		oauth2.NoContext,
		"https://www.googleapis.com/auth/analytics.readonly")
	if err != nil {
		log.Fatalf("Unable to read client : %v", err)
	}

	service, err := analytics.New(client)
	if err != nil {
		log.Fatalf("Unable to Access Google Analytics: %v", err)
	}

	result, err := service.Data.Ga.Get("ga:"+os.Getenv("PROFILE_ID"), "yesterday", "today", "ga:sessions").Dimensions("ga:visitorGender,ga:visitorAgeBracket").Do()

	if err != nil {
		log.Fatalf("Unable to get data: %v", err)
	}

	for _, row := range result.Rows {
		fmt.Printf("%s,%s,%s\n", row[0], row[1], row[2])
	}
}

実行する

GOOGLE_APPLICATION_CREDENTIALS=secret.json PROFILE_ID=xxxxx go run main.go
  • GOOGLE_APPLICATION_CREDENTIALSにConsoleから取得したサービスアカウントの鍵ファイル(json)のパスを指定
  • PROFILE_IDにGoogleアナリティクスのprofileIDを指定

実行結果

$ GOOGLE_APPLICATION_CREDENTIALS=secret.json PROFILE_ID=xxxxx go run main.go
female,18-24,260
female,25-34,1495
female,35-44,1503
female,45-54,424
female,55-64,55
male,18-24,28
male,25-34,106
male,35-44,132
male,45-54,32

※ 2016/11現在、Google Analytics APIのgoのサポートはalphaバージョンですのでご利用はご注意ください

developers.google.com