クイックノート

ちょっとした発見・アイデアから知識の発掘を

【R】複数サイトの Google Analytics をまとめてみる

Google Analytics では、複数のサイトを登録して、
それぞれのサイトのアクセス分析をすることができます。

ところが、運営するサイトが増えてくると、
いちいち切り替えてみるのが面倒になってきますし、
こっちのサイトとあっちのサイトを比べたいという時に、
一つ一つ見るのでは不便です。

有償版の「Google Analytics 360」だと、
「統合レポート」なる機能があって、
複数のサイトをまとめて見れるようなのですが、
価格が非常に高いので個人での利用はほぼ無理です。

しかし、諦めることはありません。
ないものはつくればいいのです。

幸いにも、Google Analytics では API を通じてデータを提供しているので、
API からデータを取得して、集計してしまえばいいのです。

というわけで、この記事では、
Google AnalyticsAPI を通じて、
複数のサイトのアクセス分析をまとめておこなう方法を紹介します。

準備

ここでは、R を使ってデータの取得からグラフのプロットまでを行います。

パッケージ

まずは必要なパッケージを読み込んでおきましょう。
※インストールしていないパッケージはinstall.packagesでインストールしておきましょう。

library(RGA)
library(ggplot2)
library(reshape2)

RGAAPI をつかってgoogle analytics のデータを取得するためのパッケージで、
ggplot2, reshape2 はグラフを描くために使います。

アカウントの認証

そして、google analyticsAPI を使うために、アカウント認証をしておきましょう。

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") 

f:id:u874072e:20180907161733p:plain:w400

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))

f:id:u874072e:20180907162632p:plain:w400

アクセス数の変化

次は、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")

f:id:u874072e:20180907163137p:plain:w400

ここでは、直近30日間のアクセス数の変化を、
積み立て棒グラフで見ています。

次のように、一つ一つのサイトの変化を重ねて表示するのもありですね。

g = ggplot(y,aes(x=day,y=users,color=site))
g + geom_line()

f:id:u874072e:20180907163557p:plain:w400

コンバージョン数をプロットする

もちろんアクセス数に限らず、
取得するデータ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")

f:id:u874072e:20180907163908p:plain:w400

まとめ

複数のサイトのレポートを、クリックでぽちぽち切り替えるのは中々ストレスでしたが、
ここで紹介したようにまとめてプロットしてしまうとかなりスムーズに全体を把握できますね。

後は、定期的にこのグラフを出力するようにしておけば、
いつでもすぐにレポートが見れるので色々と捗りそうです。

プライバシーポリシー