go langからGoogle Analytics APIを使う


こちらの記事↓ではSpring Boot + kotlinからの利用方法でしたがgoからの利用も調査しました。Spring Boot + kotlinでGoogle Analytics APIを使ってみた - 平日インプット週末アウトプットぶろぐ簡易的なデータの取り方を確認できたので記載。

main.go

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
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])
	}
}

実行する

1
GOOGLE_APPLICATION_CREDENTIALS=secret.json PROFILE_ID=xxxxx go run main.go

実行結果

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
$ 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バージョンですのでご利用はご注意くださいAPI Client Libraries  |  Google Developers