Rでコマンド:ブログの記事アクセスランキングをグーグルドライブに保存する例


グーグルスプレッドシートを操作する「googlesheets」とGoogly Analyticsのデータを取得する「RGA」パッケージを利用して、直近1週間の記事アクセス数を前週と比較したランキングをグーグルドライブに保存する例です。

以下のようなスプレッドシートがグーグルドライブに保存できます。
https://docs.google.com/spreadsheets/d/1x-5Ia_ugrk_JvKbJS1Av_xWWUm45W_cx-2Xe43KRNHk/edit?usp=sharing

スプレッドシートのアドオンを利用してGoogly Analyticsのデータを取得する方法もあるようですが、図式化やデータのハンドリングを考えるとRの利用をオススメします。

・「googlesheets」パッケージの紹介
 https://www.karada-good.net/analyticsr/r-136/

・「RGA」パッケージの紹介
 https://www.karada-good.net/analyticsr/r-141/

参考です

・Google Trendsのデータを取得「gtrendsR」パッケージ
 https://www.karada-good.net/analyticsr/r-392/

実行コマンドはwindows 7およびOS X 10.11.2のR version 3.2.2で確認しています。


実行コマンド

詳細はコメント、コマンドのヘルプを確認してください。

#パッケージのインストール
#install.packages("googlesheets")
#install.packages("RGA")

#パッケージの読み込み
library("googlesheets")
library("RGA")

#グーグルドライブへのログイン:gs_authコマンド
#実行するとグーグルへのログインとgooglesheetsによる
#許可のリクエスト画面がブラウザに表示されます。
gs_auth(new_user = TRUE)

#googleアカウントにログインした状況で事項:authorizeコマンド
#変数を用意することで複数アカウントの制御が可能です
authorize()

#get_gaに設定するprofile.idを取得:list_profilesコマンド
#idとnameを取得
list_profiles()[, c(1, 5)]

#実行日の前日を含めた3週間前までの日を取得
Weeks <- seq(Sys.Date() - 1, len = 3, by = "-1 weeks")
GetDataWeeks <- data.frame(EndData = c(Weeks[1], Weeks[2]),
                           StartData = c(Weeks[2] + 1, Weeks[3] + 1))

#ページビュー数が多いコンテンツ順に取得
PVContent <- list(NULL, NULL)
for(i in seq(nrow(GetDataWeeks))){
  
  PVContent[[i]] <- get_ga(profileId = paste0("ga:", list_profilesコマンドで取得したid),
                           start.date = GetDataWeeks[i, 2],
                           end.date = GetDataWeeks[i, 1],
                           dimensions = "ga:pageTitle, ga:pagePath",
                           metrics = "ga:pageviews, ga:uniquePageviews, ga:bounces, ga:entrances, ga:exits",
                           sort = "-ga:pageviews")
}

#ランキングを取得
#今週の結果
NewRanking <- data.frame(Tittle = PVContent[[1]]$page.title,
                         Ranking = seq(length(PVContent[[1]]$page.title)))
#先週の結果
OldRanking <- NULL
for(i in seq(PVContent[[1]]$page.title)){
  
  OldRanking <- c(OldRanking,
                  ifelse(length(which(PVContent[[2]]$page.title == PVContent[[1]]$page.title[i])) == 0,
                         "NA", which(PVContent[[2]]$page.title == PVContent[[1]]$page.title[i]))
  )
}

#今週の結果に先週の順位を結合
NewRanking <- cbind(NewRanking, OldRanking = OldRanking)

#記事タイトルをハイパーリンク化
#https://www.karada-good.netを自身ブログのTOP URLに変更してください
NewRanking <- cbind(NewRanking[, 1], paste0("https://www.karada-good.net", PVContent[[1]]$page.path),
                    NewRanking[, 2:3])

#データの体裁を整える
colnames(NewRanking) <- c("記事タイトル", "URL",
                          paste0(format(GetDataWeeks[1, 2], "%m/%d"), "-", format(GetDataWeeks[1, 1], "%m/%d")),
                          paste0(format(GetDataWeeks[2, 2], "%m/%d"), "-", format(GetDataWeeks[2, 1], "%m/%d")))


#グーグルシートを作成:gs_newコマンド
#書き込むデータを指定:inputオプション;nの数値を変更すると書き込むデータ数を変更できます
#データ範囲以外のセル表示設定:trimオプション
gs_new(title = paste0(format(GetDataWeeks[1, 2], "%m/%d"), "-", format(GetDataWeeks[1, 1], "%m/%d"),
                      " 人気記事ランキング Top100"), ws_title = "人気記事ランキング Top100",
       input = head(NewRanking, n = 100), trim = TRUE)

少しでも、あなたのウェブや実験の解析が楽になりますように!!

スポンサードリンク

おすすめコンテンツ


スポンサードリンク