GoogleAnalyticsの月間のデータをエクセルへ出力


GoogleAnalyticsの月間のデータをエクセルへ出力するコマンドを作成しました。

サイトのidとトークンファイルの取得と保存方法は「RでGoogle Analyticsの目次」から「RGoogleAnalyticsパッケージ基本的な利用方法」を確認してください。

また、解析環境が整っていない場合は「解析の準備」の項目を確認してください。初心者でも実行できるようにまとめています。

解析コマンドなどのまとめはこちらから:RでGoogle Analyticsの目次


取得コマンドの紹介

実行することで画像のようなエクセルが出力されます。
記事用

#パッケージの読み込み
library("RGoogleAnalytics")
library("XLConnect")
library("tcltk")
library("reshape")
library("ggplot2")

###取得年,月を設定#####
year <-  #取得したい年を設定
month <-  #取得したい月を設定
########

TableID <- "ga:データを取得するサイトのidを入力"

###取得年,月のベクトルを作成#####
StartDate <- as.Date(paste(year, "-", formatC(month, width = 2, flag="0"), "-01", sep = ""))
EndDate <- as.Date(format(as.Date(format(StartDate,"%Y%m01"),"%Y%m%d") + 31,
                          "%Y%m01"), "%Y%m%d") - 1
########

###総訪問者,新規訪問者,総訪問回数,総ページ閲覧数,平均閲覧数,直帰率を取得#####
#Dimensionsの設定
Dimensions <- c("ga:userType")
Metrics <- c("ga:users", "ga:bounceRate", "ga:sessions", "ga:pageviews")

#取得パラメータの設定
query.list <- Init(start.date = as.character(StartDate),
                   end.date = as.character(EndDate),
                   dimensions = Dimensions,
                   metrics = Metrics,
                   max.results = 10000,
                   table.id = TableID)

#取得パラメーターを処理
query <- QueryBuilder(query.list)

#データの取得
AccessData <- GetReportData(query, oauth_token)

#データの整形、上から総訪問者、新規訪問者、再訪問者
AccessData <- rbind(c(sum(AccessData[, 2]),
                      mean(AccessData[, 3]),
                      colSums(AccessData[, 4:5])),
                    AccessData[, 2:5])

#平均閲覧数を追加
AccessData <- cbind(AccessData,
                    "平均閲覧数" = round(AccessData[, 4] / AccessData[, 3], 1))

#各指標の割合を追加し小数第1位で四捨五入
AccessData <- cbind(AccessData[, 1],
                    round(AccessData[, 1] / AccessData[1, 1] * 100, 1),
                    round(AccessData[, 2], 1),
                    AccessData[, 3],
                    round(AccessData[, 3] / AccessData[1, 3] * 100, 1),
                    AccessData[, 4],
                    round(AccessData[, 4] / AccessData[1, 4] * 100, 1),
                    AccessData[, 5])

#データを転置
AccessData <- as.data.frame(t(AccessData))

#列名を付与
AccessData <- cbind(c("人数", "(%)", "直帰率",
                      "総訪問回数", "(%)", "総ページ閲覧数",
                      "(%)", "平均ページ閲覧数"),
                      AccessData)

#列名を付与
colnames(AccessData) <- c("項目", "総訪問者", "新規訪問者", "再訪問者")

#データの書き出し、保存フォルダを選択して書き出し。
#setwd(paste(as.character(tkchooseDirectory(title = "保存ディレクトリを選択"), sep = "", collapse ="")))
#writeWorksheetToFile(paste("月別の日アクセスデータ.xlsx", sep = ""), data = AccessData, sheet = "アクセスデータ")
########

###訪問者環境を取得#####
#Dimensionsの設定
Dimensions <- c("ga:userType", "ga:deviceCategory")

#取得パラメータの設定
query.list <- Init(start.date = as.character(StartDate),
                   end.date = as.character(EndDate),
                   dimensions = Dimensions,
                   metrics = c("ga:users"),
                   max.results = 10000,
                   table.id = TableID)

#取得パラメーターを処理
query <- QueryBuilder(query.list)

#データの取得、新規訪問者、再訪問者
UserDeviceData <- reshape(GetReportData(query, oauth_token), 
                          timevar = "deviceCategory",
                          idvar = "userType",
                          direction = "wide")[, 2:4]

#列合計の付与
UserDeviceData <- cbind(UserDeviceData, rowSums(UserDeviceData))

#行合計の付与
UserDeviceData <- rbind(UserDeviceData, colSums(UserDeviceData))

#データを転置
UserDeviceData <- as.data.frame(t(UserDeviceData))

#割合の付与
UserDeviceData <- rbind(UserDeviceData[1,],
                        round(UserDeviceData[1,] / UserDeviceData[4, ] * 100, 1),
                        UserDeviceData[2,],
                        round(UserDeviceData[2,] / UserDeviceData[4, ] * 100, 1),
                        UserDeviceData[3,],
                        round(UserDeviceData[3,] / UserDeviceData[4, ] * 100, 1),
                        UserDeviceData[4,])


#列名を付与
UserDeviceData <- cbind(c("デスクトップ", "(%)",
                          "モバイル", "(%)",
                          "タブレット", "(%)",
                          "合計"), UserDeviceData)

#列名を付与
colnames(UserDeviceData) <- c("環境", "新規訪問者", "再訪問者", "合計")

#データの書き出し、保存フォルダを選択して書き出し。
#setwd(paste(as.character(tkchooseDirectory(title = "保存ディレクトリを選択"), sep = "", collapse ="")))
#writeWorksheetToFile(paste("月別の日アクセスデータ.xlsx", sep = ""), data = UserDeviceData, sheet = "アクセスデータ")
########

###ページ流入経路を取得#####
#Dimensionsの設定
Dimensions <- "ga:channelGrouping"

#取得パラメータの設定
query.list <- Init(start.date = as.character(StartDate),
                   end.date = as.character(EndDate),
                   dimensions = Dimensions,
                   metrics = "ga:users",
                   max.results = 10000,
                   table.id = TableID)

#取得パラメーターを処理
query <- QueryBuilder(query.list)

#データの取得
channelData <- GetReportData(query, oauth_token)

#ユーザー数で並び替え
channelData <- channelData[order(channelData[, 2], decreasing = TRUE),]

#パーセントデータを付与
channelData <- cbind(channelData, 
                     percent = round(channelData[, 2] / sum(channelData[, 2], na.rm = TRUE) * 100, 1))

#列名を削除
rownames(channelData) <- NULL

#データの書き出し、保存フォルダを選択して書き出し。
#setwd(paste(as.character(tkchooseDirectory(title = "保存ディレクトリを選択"), sep = "", collapse ="")))
#writeWorksheetToFile(paste("月別の日アクセスデータ.xlsx", sep = ""), data = channelData, sheet = "アクセスデータ")
########

###日毎の訪問者を取得#####
#Dimensionsの設定
Dimensions <- "ga:day"

#取得パラメータの設定
query.list <- Init(start.date = as.character(StartDate),
                   end.date = as.character(EndDate),
                   dimensions = Dimensions,
                   metrics = "ga:users",
                   max.results = 10000,
                   table.id = TableID)

#取得パラメーターを処理
query <- QueryBuilder(query.list)

#データの取得
DayData <- GetReportData(query, oauth_token)

#データの書き出し、保存フォルダを選択して書き出し。
#setwd(paste(as.character(tkchooseDirectory(title = "保存ディレクトリを選択"), sep = "", collapse ="")))
#writeWorksheetToFile(paste("月別の日アクセスデータ.xlsx", sep = ""), data = DayData, sheet = "アクセスデータ")
########

###参照元メディアを取得#####
#Dimensionsの設定
Dimensions <- c("ga:source", "ga:deviceCategory")

#取得パラメータの設定
query.list <- Init(start.date = as.character(StartDate),
                   end.date = as.character(EndDate),
                   dimensions = Dimensions,
                   metrics = "ga:users",
                   max.results = 10000,
                   table.id = TableID)

#取得パラメーターを処理
query <- QueryBuilder(query.list)

#データの取得と整形
SourceData <- reshape(GetReportData(query, oauth_token), 
                      timevar = "deviceCategory",
                      idvar = "source",
                      direction = "wide")

#合計の付与
SourceData <- cbind(SourceData, rowSums(SourceData[, 2:4], na.rm = TRUE))

#合計で並び化
SourceData <- SourceData[order(SourceData[, 5], decreasing = TRUE),]

#行名の付与
colnames(SourceData) <- c("参照元/メディア", "デスクトップ", "モバイル", "タブレット", "合計")

#データの書き出し、保存フォルダを選択して書き出し。
#setwd(paste(as.character(tkchooseDirectory(title = "保存ディレクトリを選択"), sep = "", collapse ="")))
#writeWorksheetToFile(paste("月別の日アクセスデータ.xlsx", sep = ""), data = SourceData, sheet = "アクセスデータ")
########

###検索キーワードをデバイス毎に取得#####
#Dimensionsの設定
Dimensions <- c("ga:keyword", "ga:deviceCategory")

#取得パラメータの設定
query.list <- Init(start.date = as.character(StartDate),
                   end.date = as.character(EndDate),
                   dimensions = Dimensions,
                   metrics = "ga:users",
                   max.results = 10000,
                   table.id = TableID)

#取得パラメーターを処理
query <- QueryBuilder(query.list)

#データの取得と整形
AnalyticsData <- reshape(GetReportData(query, oauth_token), 
                         timevar = "deviceCategory",
                         idvar = "keyword",
                         direction = "wide")

#合計を計算し付与
AnalyticsData <- cbind(AnalyticsData, 
                       rowSums(AnalyticsData[, 2:4], na.rm = TRUE))

#行名の付与
colnames(AnalyticsData) <- c("キーワード", "デスクトップ", "モバイル", "タブレット", "合計")

#合計の降順で並び替え
KeywordDeviceData <- AnalyticsData[order(AnalyticsData[, 5], decreasing = TRUE), ]

#データの書き出し、保存フォルダを選択して書き出し。
#setwd(paste(as.character(tkchooseDirectory(title = "保存ディレクトリを選択"), sep = "", collapse ="")))
#writeWorksheetToFile(paste("月別の日アクセスデータ.xlsx", sep = ""), data = KeywordDeviceData, sheet = "アクセスデータ")
########

###グラフの作成####
#ページ流入経路円グラフ
PiePlot <- ggplot(channelData, aes(x = "",
                                   y = channelData[, 2],
                                   fill = factor(channelData[, 1],
                                                 levels = channelData[, 1])))

PiePlot <- PiePlot +
           geom_bar(width = 1, stat = "identity", show_guide = TRUE) +
           geom_text(aes(y = cumsum(channelData[, 2]) - 0.5 * channelData[, 2],
                         label = paste(channelData[, 3], "%", sep = ""))) +
           coord_polar(theta = "y") +
           labs(x = "", y = "") +
           theme_bw(base_family = ifelse(.Platform[1] == "windows", "", "HiraKakuProN-W3")) +
           scale_y_continuous(breaks = NULL) +
           scale_x_discrete(breaks = NULL) +
           guides(fill = guide_legend(title = "流入経路")) +
           theme(axis.ticks = element_blank(),
                 axis.text.x = element_text(size = 8,
                                            angle = 60,
                                            hjust = 1.1,
                                            colour = "grey50"))
########

#日毎の訪問者折れ線グラフ
LinePlot <- ggplot(DayData, aes(x = DayData[, 1], y = DayData[, 2], group = 1))

LinePlot <- LinePlot +
            geom_line(colour = "blue", size = 1.2, show_guide = FALSE) +
            geom_point(aes(colour = "red", size = 1.2), show_guide = FALSE) +
            labs(x = "日", y = "訪問者数") +
            theme_bw(base_family = ifelse(.Platform[1] == "windows", "", "HiraKakuProN-W3")) +
            theme(axis.ticks = element_blank(),
                  axis.text.x = element_text(size = 8,
                                             angle = 60,
                                             hjust = 1.1,
                                             colour = "grey50"))
########

###グラフが貼り付けられたエクセルファイルの出力#####
#保存フォルダの選択
SaveDir <- paste(as.character(tkchooseDirectory(title = "保存ディレクトリを選択"), sep = "", collapse =""))
#ワークブックの作成
wb <- loadWorkbook("アクセスデータ.xlsx", create = TRUE)
#シートの作成
createSheet(wb, name = "アクセスデータ")
#セルスタイルの調整
setMissingValue(wb, value = "-")

###データの書き込み#####
#アクセスデータ
writeWorksheet(wb, AccessData, sheet = "アクセスデータ", startRow = 5, startCol = 2)

#訪問者環境
writeWorksheet(wb, UserDeviceData, sheet = "アクセスデータ", startRow = 16, startCol = 2)

#参照元/メディアTOP15
writeWorksheet(wb, SourceData[1:15, ], sheet = "アクセスデータ", startRow = 44, startCol = 2)

#訪問者環境別キーワード
writeWorksheet(wb, KeywordDeviceData, sheet = "アクセスデータ", startRow = 5, startCol = 15)

#カラム幅の調整
setColumnWidth(wb, sheet = "アクセスデータ", column = 2:20, width = -1)

#一時フォルダに切り替え
setwd(tempdir())

#ページ流入経路グラフ
jpeg(filename = "PiePlot.jpeg", width = 300, height = 280)
#出力
print(PiePlot)
dev.off()
#グラフの書き込み
createName(wb, name = "PiePlot", formula = paste("アクセスデータ", idx2cref(c(6, 7)), sep = "!"))
addImage(wb, filename = "PiePlot.jpeg", name = "PiePlot", originalSize = TRUE)
writeWorksheet(wb, "ページ流入経路", sheet = "アクセスデータ", startRow = 5, startCol = 7, header = FALSE)

#訪問者推移グラフ
jpeg(filename = "LinePlot.jpeg", width = 600, height = 250)
#出力
print(LinePlot)
dev.off()
#グラフの書き込み
createName(wb, name = "LinePlot", formula = paste("アクセスデータ", idx2cref(c(26, 2)), sep = "!"))
addImage(wb, filename = "LinePlot.jpeg", name = "LinePlot", originalSize = TRUE)
writeWorksheet(wb, "訪問者推移", sheet = "アクセスデータ", startRow = 25, startCol = 2, header = FALSE)

#ファイルの保存
setwd(SaveDir)
saveWorkbook(wb)
################

解析コマンドなどのまとめはこちらから:RでGoogle Analyticsの目次

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

スポンサードリンク

おすすめコンテンツ


スポンサードリンク