gtm_var_lookup_tbl <- function(var) {
mapping_tbl <- tibble()
if (var$parameter[[1]]$value == 'false' | length(var$parameter) < 4) {
for (i in 1:length(var$parameter[[3]]$list)) {
mk <- var$parameter[[3]]$list[[i]]$map[[1]]$value
mv <- var$parameter[[3]]$list[[i]]$map[[2]]$value
if (is_empty(mk)==TRUE) {
next()
} else {
new_tbl <- tibble(map_id = i,
map_key = mk,
map_value = mv)
mapping_tbl <- bind_rows(mapping_tbl,new_tbl)
}
}
} else {
for (i in 1:length(var$parameter[[4]]$list)) {
mk <- var$parameter[[4]]$list[[i]]$map[[1]]$value
mv <- var$parameter[[4]]$list[[i]]$map[[2]]$value
if (is_empty(mk)==TRUE) {
next()
} else {
new_tbl <- tibble(map_id = i,
map_key = mk,
map_value = mv)
mapping_tbl <- bind_rows(mapping_tbl,new_tbl)
}
}
}
otbl <- tibble(set_default_value = ifelse(var$parameter[[1]]$value == 'true',TRUE,FALSE),
map_input = var$parameter[[2]]$value,
test = "i")
if (var$parameter[[1]]$value == 'true') {
defval <- var$parameter[[3]]$value
}
var$parameter <- NULL
var_tbl <- as_tibble(var) %>%
mutate(test = 'i')
mapping_tbl <- mapping_tbl %>%
mutate(test = 'i') %>%
full_join(otbl,by='test') %>%
full_join(var_tbl,by='test') %>%
select(-test) %>%
tidycols() %>%
variable_type_fix()
if (mapping_tbl$set_default_value[[1]] == FALSE) {
mapping_tbl <- mapping_tbl %>%
gtm_var_missing()
} else {
mapping_tbl <- mapping_tbl %>%
mutate(default_value = defval,
key = as.character(NA))
}
return(mapping_tbl)
}
gtm_var_gas <- function(var) {
if (var$parameter[[1]]$key == 'collectAdId') {
ga_params <- tibble(tracking_id = var$parameter[[2]]$value,
collect_ad_id = ifelse(var$parameter[[1]]$value == 'false',FALSE,TRUE),
variable_id = var$variableId)
} else {
ga_params <- tibble(tracking_id = var$parameter[[1]]$value,
variable_id = var$variableId)
}
var$parameter <- NULL
ga_tbl <- as_tibble(var) %>%
tidycols() %>%
inner_join(ga_params,by='variable_id') %>%
variable_type_fix()
return(ga_tbl)
}
gtm_var_fup <- function(var) {
fup_params <- tibble(set_default_value = ifelse(var$parameter[[1]]$value == 'true',TRUE,FALSE),
default_value = ifelse(set_default_value == TRUE, var$parameter[[2]]$value,NA),
key = ifelse(set_default_value == TRUE,var$parameter[[3]]$value,var$parameter[[2]]$value),
variable_id = var$variableId)
var$parameter <- NULL
fup_tbl <- as_tibble(var) %>%
tidycols() %>%
variable_type_fix() %>%
inner_join(fup_params,by='variable_id')
return(fup_tbl)
}
gtm_var_md <- function(var) {
require(purrr)
md_params <- do.call('bind_rows',map(var$parameter,as_tibble)) %>%
select(-type) %>%
pivot_wider(names_from = key,values_from=value) %>%
tidycols() %>%
mutate(set_default_value = ifelse(set_default_value == 'false',FALSE,
ifelse(set_default_value == 'true',TRUE,NA)),
variable_id = var$variableId)
var$parameter <- NULL
md_tbl <- as_tibble(compact(var)) %>%
tidycols() %>%
variable_type_fix() %>%
inner_join(md_params,by='variable_id')
return(md_tbl)
}
gtm_var_missing <- function(df) {
z <- df %>%
mutate(set_default_value = as.logical(NA),
default_value = as.character(NA),
key = as.character(NA))
return(z)
}
gtm_var_dictionary <- function(x,type = 'name') {
require(tidyverse)
x <- str_to_lower(gsub(' ','_',x))
x <- str_to_lower(gsub('-','_',x))
dictionary <- tibble(
var_code = c("k", "aev", "c", "ctv", "e", "jsm",
"v", "dbg", "d", "f", "j", "smm", "r", "u", "md", "fup", "gas",
"fn"),
var_code_name = c("1st_party_cookie", "auto_event_variable",
"constant_string", "container_version_number", "custom_event",
"custom_javascript", "data_layer_variable", "debug_mode", "dom_element",
"http_referrer", "javascript_variable", "lookup_table", "random_number",
"url", "parameter", "user_property", "ga_settings", "function_call"
))
if (type == 'name') {
z <- dictionary %>%
filter(var_code_name == x)
} else {
z <- dictionary %>%
filter(var_code == x)
if (nrow(z) == 0) {
z <- dictionary %>%
filter(str_detect(var_code_name,x)==TRUE)
if (nrow(z) > 1) {
t <- z %>% pull(var_code_name)
message <- paste('Your variable selection is not specific; please specify whether you want a ',t[1],' or a ',t[2],sep='')
stop(message)
} else if (nrow(z) == 0) {
stop('Your variable is not recognized. Please refer to the list of possible variables and try again')
}
}
}
z <- z %>% pull(var_code)
return(z)
}
gtm_var_id_check <- function(account_id,container_id,workspace_id,variable_id,token,variable_name) {
require(purrr)
require(tidyverse)
if (is_empty(variable_id) == TRUE) {
variable_id <- gtm_variables_list(account_id,container_id,workspace_id,token) %>%
filter(name == variable_name) %>%
distinct(variable_id) %>%
pull(variable_id)
} else {
variable_id <- variable_id
}
return(variable_id)
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.