RGAパッケージの使い方についてメモ。 下記READMEの一部分を簡単に訳しただけなので詳しくは下記を読むか、ヘルプを参照のこと。
http://cran.r-project.org/web/packages/RGA/README.html
ちなみにRGoogleAnalyticsパッケージの例ではあるが、以下の記事が非常に参考になるので実際にデータを取得する際は下記を参考にするとよい->未来の俺。
http://abrahamcow.hatenablog.com/entry/2015/01/02/215112
そもそもRGoogleAnalyticsパッケージがあるのになぜRGAを使うのか。
それはRGoogleAnalyticsパッケージはOAuth play groundで毎回windowが開かれてめんどくさかったから。
で、認証は初回のみですませたいと思って探したらRGAを見つけた。
過去にrgaパッケージというのもあったがこれはずいぶん前に開発がストップしている。
で、最後までこの記事を書いてあらためてRGoogleAnalyticsのCRANページを見たら、OAuth2.0に対応していた。ショック熊ショック。正直OAuth2.0のクライアントIDとクライアントシークレットを取得したらRGoogleAnalyticsでいい気がする。
install.packages("RGA")
ここからGoogle Analytics APIを認証して、クライアントIDとクライアントシークレットを取得する。
正直これが取得できたらあとはRGoogleAnalyticsパッケージを使ってAuth()
した方がRGoogleAnalytics関係の記事を活用できるのでいい気がする。
ページ左トップの「プロジェクトを作成」を押す。
プロジェクト名とプロジェクトIDを入力して設定。
そのままプロジェクト画面に進むので左のサイドバーからAPIと認証->APIを選ぶ。
APIの一覧が出るので、Analytics APIをONにする(1日50,000リクエストが上限なので注意)。
左のAPIと認証->認証情報を選ぶ。
「新しいクライアントIDを作成」を押す。
「インストールされているアプリケーション」を選ぶ。
「クライアントID」と「クライアントシークレット」をメモする。
上記手順で入手した「クライアントID」と「クライアントシークレット」を用いて認証する。
library(RGA)
authorize(client.id = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
client.secret = "XXXXXXXXXXXXXXXXXXXXXX")
いちいち認証するのが面倒な場合は環境変数を使う手もある。
詳しくは下記を確認のこと。
プロフィールを確認してプロフィール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,000,000 maximum unique dimension combinations for any type of query;
500,000 maximum sessions for special queries where the data is not already stored.
これを回避するにはクエリを小さく分割すればよい。
下記は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