Google Analytics では、複数のサイトを登録して、
それぞれのサイトのアクセス分析をすることができます。
ところが、運営するサイトが増えてくると、
いちいち切り替えてみるのが面倒になってきますし、
こっちのサイトとあっちのサイトを比べたいという時に、
一つ一つ見るのでは不便です。
有償版の「Google Analytics 360」だと、
「統合レポート」なる機能があって、
複数のサイトをまとめて見れるようなのですが、
価格が非常に高いので個人での利用はほぼ無理です。
しかし、諦めることはありません。
ないものはつくればいいのです。
幸いにも、Google Analytics では API を通じてデータを提供しているので、
API からデータを取得して、集計してしまえばいいのです。
というわけで、この記事では、
Google Analytics の API を通じて、
複数のサイトのアクセス分析をまとめておこなう方法を紹介します。
準備
ここでは、R を使ってデータの取得からグラフのプロットまでを行います。
パッケージ
まずは必要なパッケージを読み込んでおきましょう。
※インストールしていないパッケージはinstall.packages
でインストールしておきましょう。
library(RGA) library(ggplot2) library(reshape2)
RGA
は API をつかってgoogle analytics のデータを取得するためのパッケージで、
ggplot2, reshape2
はグラフを描くために使います。
アカウントの認証
そして、google analytics の API を使うために、アカウント認証をしておきましょう。
authorize()
authorize
を実行するとWebブラウザからGoogle アカウントへのログインが求められ、
それだけで認証完了です。
Analytics ID の取得
サイトのデータを取得するために、サイト毎の id を使うので、
まとめて取得しておきます。
ids = list_profiles()$id
これで、Google Analytics に登録している全てのサイトのIDが取得できました。
サイト毎のアクセス数
それでは、Google Analytics に登録しているサイトのアクセス数を全て読み込んで、
プロットしてみましょう。
date = Sys.Date() - 1 ldf = sapply(ids,function(id){ get_ga(id, start.date = date, end.date=date, dimensions = "ga:date") }) df = data.frame(url=colnames(ldf), users=unlist(ldf["users",])) g = ggplot(df,aes(x=reorder(url,users),y=users,fill=url)) g+ geom_bar(stat="identity")
date
で取得するアクセス数の日付を指定します。
ここでは、1日前のアクセス数を表示しています。
また、users
と書いている通り、ユーザー数のグラフです。
見やすくなるように昇順に並べ替えています。
円グラフのようにして、それぞれのサイトの比率を見るのもありですね。
ggplot(df,aes(x="",y=users,fill=url)) + geom_bar(width=1,stat="identity") + coord_polar("y",start=0) + guides(fill=guide_legend(reverse = TRUE))
アクセス数の変化
次は、1日だけのアクセス数ではなく、
数日間のアクセス数の変化を追ってみましょう。
ldf = sapply(ids,function(id){ get_ga(id, start.date = date - 30, end.date=date, # metrics = "ga:users", dimensions = "ga:date") }) df = sapply(colnames(ldf),function(url){ x = ldf[,url] rbind(x$users) }) y = melt(df) colnames(y) = c("day","site","users") g = ggplot(y,aes(x=day,y=users,fill=site)) g + geom_bar(stat="identity")
ここでは、直近30日間のアクセス数の変化を、
積み立て棒グラフで見ています。
次のように、一つ一つのサイトの変化を重ねて表示するのもありですね。
g = ggplot(y,aes(x=day,y=users,color=site)) g + geom_line()
コンバージョン数をプロットする
もちろんアクセス数に限らず、
取得するデータmetric
を変えることで、
様々なデータをプロットできます。
例として、コンバージョン数の変化をプロットしてみましょう。
ldf = sapply(ids,function(id){ get_ga(id, start.date = date - 30, end.date=date, metrics = "ga:goalCompletionsAll", dimensions = "ga:date") }) df = sapply(colnames(ldf),function(url){ x = ldf[,url] rbind(x$goalCompletionsAll) }) y = melt(df) colnames(y) = c("day","site","conversion") g = ggplot(y,aes(x=day,y=conversion,fill=site)) g + geom_bar(stat="identity")
まとめ
複数のサイトのレポートを、クリックでぽちぽち切り替えるのは中々ストレスでしたが、
ここで紹介したようにまとめてプロットしてしまうとかなりスムーズに全体を把握できますね。
後は、定期的にこのグラフを出力するようにしておけば、
いつでもすぐにレポートが見れるので色々と捗りそうです。