2016-01-19 3 views
0

Я ищу mapply по нескольким Google Analytics Core Reporting API запросам в приложении Shiny с использованием 3 входных переменных, продиктованных каждой строкой кадра данных. Чтобы получить доступ к API Google Analytics через R, я пользуюсь библиотекой CRAN RGA.Взаимозаполнение нескольких запросов API Google Analytics в приложении Shiny

В моем ui.R у меня есть textOutput, нанесенный на карту i в df$name. Таким образом, output$name должен отображать результаты обоих запросов для каждого i в df$name.

В настоящее время моя консоль печатает:

"Результаты не были получены."

Я проверил запросы отдельно, и они оба должны вытащить результаты.

Это сокращенная версия моего server.R:

shinyServer(function(input, output) { 
    library(RGA) 
    thisWeekEnd<-"2016-01-17" 
    thisWeekStart<-as.character(as.Date(thisWeekEnd)-7) 
    lastWeekEnd<-as.character(as.Date(thisWeekEnd)-8) 
    lastWeekStart<-as.character(as.Date(thisWeekEnd)-13) 
    startOfCampaign<-"2015-12-23" 

    df <- data.frame(
    start= c(thisWeekStart,lastWeekStart,startOfCampaign), 
    end =c(thisWeekEnd,lastWeekEnd,thisWeekEnd), 
    name=c("thisWeek","lastWeek","total"), stringsAsFactors=FALSE) 

    gaData<-function(start,end,name){ 

    query1 <- get_ga(
     id, 
     start.date = start, 
     end.date = end, 
     metrics = "ga:sessions", 
    ) 

    query2 <- get_ga(
     id, 
     start.date = start, 
     end.date = end, 
     metrics = "ga:uniqueEvents", 
    ) 

    output$name<-renderText({ 
     paste(as.character(query1$sessions)," sessions", 
     as.character(query2$unique.events)," unique events" 
     )}) 
    } 

    mapply(gaData, df$start,df$end,df$name) 
} 
+0

Этот код работает для меня: https://gist.github.com/artemklevtsov/c510c0a7737bf7215099 –

+0

Код работает через R, но в блестящем приложении результаты не вытягиваются. Я думаю, что моя проблема включает функцию вставки с выходом $ name <-renderText ({}), так что выход направляется на динамический элемент в пользовательском интерфейсе для каждого имени df $. –

ответ

0

Если я верно понял вопрос:

library(shiny) 
library(RGA) 
authorize() 
id <- "ga:100202885" 
getDates <- function() { 
    today <- Sys.Date() 
    thisWeekStart <- as.Date(cut(today, "weeks")) 
    thisWeekEnd <- as.Date(cut(today, "weeks")) + 6 
    lastWeekStart <- thisWeekStart - 7 
    lastWeekEnd <- thisWeekEnd - 7 
    startOfCampaign <- as.Date("2015-12-23") 
    data.frame(
     start = c(thisWeekStart, lastWeekStart, startOfCampaign), 
     end = c(thisWeekEnd, lastWeekEnd, thisWeekEnd), 
     row.names = c("thisWeek", "lastWeek","total"), 
     stringsAsFactors = FALSE) 
} 
getData <- function(start, end, ...) { 
    get_ga(..., start.date = start, end.date = end, "ga:sessions,ga:uniqueEvents") 

} 

ui <- shinyUI(fluidPage(
    title = "Test RGA input", 
    tableOutput("data") 
)) 

server <- shinyServer(function(input, output) { 
    GAData <- NULL 
    dates <- getDates() 
    GAData <- cbind(df, t(mapply(getData, dates$start, dates$end, profileId = id))) 
    output$data <- renderTable({ 
     validate(need(!is.null(GAData), "Loading data...")) 
     GAData 
    }) 
}) 

shinyApp(ui, server)