This is as far I have got. Basically comes back saying sum_by_day is not a function. Looking at the examples I thought that I could output the table that gets output in Rstudio that way. Am I miles off?
library(httr)
library(tidyverse)
library(lubridate)
library(shiny)
# Define UI for dataset viewer app ----
ui <- fluidPage(
# App title ----
titlePanel("Widgets"),
# Sidebar layout with input and output definitions ----
sidebarLayout(
# Sidebar panel for inputs ----
sidebarPanel(
h4("Sidebar Content")
),
# Main panel for displaying outputs ----
mainPanel(
# Output: Header + table ----
h4("Observations"),
tableOutput("view")
)
)
)
# Define server logic to summarize and view selected dataset ----
server <- function(input, output) {
# THIS IS THE R CODE
# Setting the FB access token as a variable
access_token <- "ACCESS TOKEN HERE"
# Getting the last 30days of Facebook Insights and assiging into an object called 'report'
report <- GET('https://graph.facebook.com/v2.10/act_781789658666312/insights',
query = list(
access_token = access_token,
level="ad",
fields = "campaign_id, adset_id, adset_name, ad_id, ad_name, impressions, cpm, reach, clicks, unique_clicks, ctr, cpc, unique_ctr, cost_per_unique_click, estimated_ad_recall_rate, cost_per_estimated_ad_recallers, spend, canvas_avg_view_time, canvas_avg_view_percent",
limit = "5000",
encode = "json",
date_preset="last_7d",
breakdowns = "age",
time_increment="1"),
verbose())
# Getting the output into a tidy dataframe
content_result <- content(report)
content_result[["paging"]] <- NULL
result_data <- content_result$data
result_data <- result_data %>% reduce(bind_rows)
# Setting classes of variables - numerical, data, etc and putting into a frame called 'import'
result_data$impressions <- as.numeric(result_data$impressions)
result_data$unique_clicks <- as.numeric(result_data$unique_clicks)
result_data$clicks <- as.numeric(result_data$clicks)
result_data$spend <- as.numeric(result_data$spend)
result_data$date_start <- as.Date(result_data$date_start)
result_data$date_stop <- as.Date(result_data$date_stop)
import <- result_data
# Subset and summarise by day
sum_by_day <- import %>%
group_by(date_start) %>%
summarise(clicks = sum(clicks), impressions = sum(impressions), spend=sum(spend)) %>%
mutate(CPC_new=spend/clicks) %>%
mutate(CTR_new=clicks / impressions)
# END OF R CODE
output$view <- renderTable({
sum_by_day()
})
}
# Create Shiny app ----
shinyApp(ui, server)