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) ################ [/code]


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

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

スポンサードリンク

関連コンテンツ


スポンサードリンク