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

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/

実行コマンドは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))

#&#12506;&#12540;&#12472;&#12499;&#12517;&#12540;&#25968;&#12364;&#22810;&#12356;&#12467;&#12531;&#12486;&#12531;&#12484;&#38918;&#12395;&#21462;&#24471;
PVContent <- list(NULL, NULL)
for(i in seq(nrow(GetDataWeeks))){
  
  PVContent[[i]] <- get_ga(profileId = paste0("ga:", list_profiles&#12467;&#12510;&#12531;&#12489;&#12391;&#21462;&#24471;&#12375;&#12383;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")
}

#&#12521;&#12531;&#12461;&#12531;&#12464;&#12434;&#21462;&#24471;
#&#20170;&#36913;&#12398;&#32080;&#26524;
NewRanking <- data.frame(Tittle = PVContent[[1]]$page.title,
                         Ranking = seq(length(PVContent[[1]]$page.title)))
#&#20808;&#36913;&#12398;&#32080;&#26524;
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]))
  )
}

#&#20170;&#36913;&#12398;&#32080;&#26524;&#12395;&#20808;&#36913;&#12398;&#38918;&#20301;&#12434;&#32080;&#21512;
NewRanking <- cbind(NewRanking, OldRanking = OldRanking)

#&#35352;&#20107;&#12479;&#12452;&#12488;&#12523;&#12434;&#12495;&#12452;&#12497;&#12540;&#12522;&#12531;&#12463;&#21270;
#https://www.karada-good.net&#12434;&#33258;&#36523;&#12502;&#12525;&#12464;&#12398;TOP URL&#12395;&#22793;&#26356;&#12375;&#12390;&#12367;&#12384;&#12373;&#12356;
NewRanking <- cbind(NewRanking[, 1], paste0("https://www.karada-good.net", PVContent[[1]]$page.path),
                    NewRanking[, 2:3])

#&#12487;&#12540;&#12479;&#12398;&#20307;&#35009;&#12434;&#25972;&#12360;&#12427;
colnames(NewRanking) <- c("&#35352;&#20107;&#12479;&#12452;&#12488;&#12523;", "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")))


#&#12464;&#12540;&#12464;&#12523;&#12471;&#12540;&#12488;&#12434;&#20316;&#25104;:gs_new&#12467;&#12510;&#12531;&#12489;
#&#26360;&#12365;&#36796;&#12416;&#12487;&#12540;&#12479;&#12434;&#25351;&#23450;:input&#12458;&#12503;&#12471;&#12519;&#12531;;n&#12398;&#25968;&#20516;&#12434;&#22793;&#26356;&#12377;&#12427;&#12392;&#26360;&#12365;&#36796;&#12416;&#12487;&#12540;&#12479;&#25968;&#12434;&#22793;&#26356;&#12391;&#12365;&#12414;&#12377;
#&#12487;&#12540;&#12479;&#31684;&#22258;&#20197;&#22806;&#12398;&#12475;&#12523;&#34920;&#31034;&#35373;&#23450;:trim&#12458;&#12503;&#12471;&#12519;&#12531;
gs_new(title = paste0(format(GetDataWeeks[1, 2], "%m/%d"), "-", format(GetDataWeeks[1, 1], "%m/%d"),
                      " &#20154;&#27671;&#35352;&#20107;&#12521;&#12531;&#12461;&#12531;&#12464; Top100"), ws_title = "&#20154;&#27671;&#35352;&#20107;&#12521;&#12531;&#12461;&#12531;&#12464; Top100",
       input = head(NewRanking, n = 100), trim = TRUE)

少しでも、あなたの解析が楽になりますように!!

タイトルとURLをコピーしました