「植物のミカタ」のGoogle Analytics(以後GAと略す)から取得したpageviewsをチャットワークに送ってみる。

今回は、前日のpageviewsと日付けを取得してみる。

※pageviewsとは、閲覧されたページの合計数として定義される指標


実際のコードを書く前に今回のコードで必要なライブラリを取得しておく。

$ go get golang.org/x/oauth2
$ go get google.golang.org/api/analytics/v3

package main

import (
	"bytes"
	"log"
	"net/http"

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

const PROFILE_ID = "***********" //GAのプロファイルID

func main() {
	//認証資格情報を取得するHTTPクライアントを返す
	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)
	}
	//GAからデータを取得する
	result, err := service.Data.Ga.Get("ga:"+PROFILE_ID, "yesterday", "yesterday", "ga:pageviews").Dimensions("ga:date").Do()

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

	var res string    //日付を入れる変数
	var res1 string   //PVを入れる変数
	for _, row := range result.Rows {
		res = row[0]
		res1 = row[1]
	}

	/** ここからチャットワークAPIのコード **/

	room_id := "********"  //チャットワークのルームID 
	url := "https://api.chatwork.com/v2/rooms/" + room_id + "/messages"
	//bodyの後には文字列がくる
	param := "body=" + res + " " + "GA PV:" + res1
	request, error := http.NewRequest("POST", url, bytes.NewBufferString(param))
	if error != nil {
		log.Fatal(error)
	}
	api_key := "**********"  //チャットワークで取得したトークン
	request.Header.Add("X-ChatWorkToken", api_key)
	request.Header.Add("Content-Type", "application/x-www-form-urlencoded")
	response, error := http.DefaultClient.Do(request)
	response.Body.Close()
	if error != nil {
		log.Fatal(error)
	}
	//fmt.Println(response)

}

const PROFILE_ID = "*********"は、GAで登録したサイト毎に自動生成される番号のこと。

下の図の赤い部分に実際表示されている番号。


Data.Ga.Getの後は、Metrics、Dimentionの順番で取得したいデータを定義する。

ここでMetricsはga:"+PROFILE_ID, "yesterday", "yesterday", "ga:pageviews"までで、〇〇から〇〇までのの△の情報を取得するという意味になる。

ここでは、"yesterday"から"yesterday"までのpageviewsを取得するという意味になる。

Dimentionは、さらに詳しく指定したい時に指定する。ここでは、日付ga:dateを入れた。

後は、チャットワークへの自動送信なので、以前の過去記事を参考にした。

Go言語でHTTPのPOST


実行すると下記のようにチャットワークに投稿された。

※実行時はGoogle API Consoleで取得した認証情報が記載されたJSONファイルの読み込みが必要です。読み込み方法は下記のページに記載しています。

https://github.com/ryoko-saito/ga2cw