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の目次
少しでも、あなたのウェブや実験の解析が楽になりますように!!