RGAパッケージの使い方についてメモ。 下記READMEの一部分を簡単に訳しただけなので詳しくは下記を読むか、ヘルプを参照のこと。

http://cran.r-project.org/web/packages/RGA/README.html

ちなみにRGoogleAnalyticsパッケージの例ではあるが、以下の記事が非常に参考になるので実際にデータを取得する際は下記を参考にするとよい->未来の俺。

http://abrahamcow.hatenablog.com/entry/2015/01/02/215112

なぜRGAなのか->別にRGAでなくてもよいしRGoogleANalyticsでよい

そもそもRGoogleAnalyticsパッケージがあるのになぜRGAを使うのか。

それはRGoogleAnalyticsパッケージはOAuth play groundで毎回windowが開かれてめんどくさかったから。

で、認証は初回のみですませたいと思って探したらRGAを見つけた。

過去にrgaパッケージというのもあったがこれはずいぶん前に開発がストップしている。

で、最後までこの記事を書いてあらためてRGoogleAnalyticsのCRANページを見たら、OAuth2.0に対応していた。ショック熊ショック。正直OAuth2.0のクライアントIDとクライアントシークレットを取得したらRGoogleAnalyticsでいい気がする。

まずはインストール

install.packages("RGA")

OAuth2.0の認証(Google Analytics API)

ここからGoogle Analytics APIを認証して、クライアントIDとクライアントシークレットを取得する。

正直これが取得できたらあとはRGoogleAnalyticsパッケージを使ってAuth()した方がRGoogleAnalytics関係の記事を活用できるのでいい気がする。

新しくプロジェクトを作る

AnalyticsAPIをONにする

  • そのままプロジェクト画面に進むので左のサイドバーからAPIと認証->APIを選ぶ。

  • APIの一覧が出るので、Analytics APIをONにする(1日50,000リクエストが上限なので注意)。

「クライアントID」と「クライアントシークレット」を入手

  • 左のAPIと認証->認証情報を選ぶ。

  • 「新しいクライアントIDを作成」を押す。

  • 「インストールされているアプリケーション」を選ぶ。

  • 「クライアントID」と「クライアントシークレット」をメモする。

認証する

上記手順で入手した「クライアントID」と「クライアントシークレット」を用いて認証する。

library(RGA)
authorize(client.id = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", 
          client.secret = "XXXXXXXXXXXXXXXXXXXXXX")

いちいち認証するのが面倒な場合は環境変数を使う手もある。

詳しくは下記を確認のこと。

http://cran.r-project.org/web/packages/RGA/README.html

データの取得

プロフィールを確認してプロフィールIDを確認する。

list_profiles()はデータフレームで結果を返す。

list_profiles()

筆者の場合、プロフィールIDは一つしかないのでlist_profiles()$idとしてこれを使い回す。

myid <- list_profiles()$id

ためしにこの1ヶ月のユーザー数、セッション数、ページビュー数を取得してみる。

ga_data1 <- get_ga(profile.id = myid, 
                  start.date = "30daysAgo", end.date = "yesterday",
                  metrics = "ga:users,ga:sessions,ga:pageviews")
ga_data1

Google Analyticsを導入した日は下記のようにして取得する。

first_date <- get_firstdate(profile.id = myid)

Google Analyticsを導入した日から昨日までのデータをとりたい場合は以下のようにする。

なおget_ga()で日付を指定したい場合はyyyy-mm-ddの形にする必要があるが、get_firstdate()yyyymmddで返してくるので変換しておく。

first_date <- as.Date(as.character(first_date), "%Y%m%d")
ga_data2 <- get_ga(profile.id = myid, 
                  start.date = first_date, end.date = "yesterday",
                  metrics = "ga:users,ga:sessions,ga:pageviews")
ga_data2

なお、1回のクエリあたり以下のような制限がある。

これを回避するにはクエリを小さく分割すればよい。

下記は1日単位でクエリを分割し、検索ワードごとにセッション数をみている。

dates <- seq(as.Date("2014-12-01"), as.Date("2014-12-15"), by = "days")
ga_data3 <- aggregate(. ~ keyword, FUN = sum,
                     data = do.call(rbind, lapply(dates, function(d) {
                       get_ga(profile.id = myid, start.date = d, end.date = d,
                       metrics = "ga:sessions", dimensions = "ga:keyword",
                       filter = "ga:medium==organic;ga:keyword!=(not provided);ga:keyword!=(not set)")})))
ga_data3