#' @title Wrike Custom Field Use by Folder
#'
#' @description This function pulls a list of your task ids within a folder that have a specified custom field filled out OR that have the specified value.
#' @param folder_id Wrike folder id. Use \code{\link{wrike_folders}} function to determine if needed.
#' @param custom_field_id Wrike custom field id or search for a value in the custom fields (ex: a product code). Use \code{\link{wrike_custom_field_url}} function to determine if needed.
#' @return A list of all Wrike task ids in a folder that have the specified custom field filled out
#'
#' @export
#' @examples
#' wrike_custom_field_exists(folder_id = "IEAAAOH5I4AB7JFG", custom_field_id = "IEAAAOH5JUAAABQ5")
#' wrike_custom_field_exists(folder_id = "IEAAAOH5I4AB7JFG", custom_field_id = "Solar Inspection")
wrike_custom_field_exists <- function(folder_id, custom_field_id) {
wriker::authenticate()
url <- paste0('https://www.wrike.com/api/v4/folders/', folder_id, '/tasks?fields=["customFields"]')
GETdata <- httr::GET(url, httr::add_headers(Authorization = paste("Bearer", v4_key, sep = " ")))
dat <- httr::content(GETdata)
dat2 <- dat[[2]]
field_list <- dplyr::data_frame()
for(i in seq_along(dat2)){
tmp <- dplyr::bind_cols(fields = sum(stringr::str_detect(unlist(dat$data[[i]]$`customFields`),
custom_field_id)),
id = purrr::map_df(dat2[i], magrittr::extract, c("id")))
field_list <- dplyr::bind_rows(field_list, tmp)
}
print(field_list %>% dplyr::filter(fields > 0 & nchar(id) > 4))
}
#' @title Wrike Custom Field Use by Task Id
#'
#' @description This function pulls a list of the custom field values & ids associated with specified task ids
#' @param task_id Wrike task id
#' @param custom_field_id Use \code{\link{wrike_custom_field_url}} function to find id if needed.
#'
#' @import httr
#' @import purrr
#' @import magrittr
#' @import stringr
#'
#' @export
#' @examples
#' wrike_custom_field_on_task(task_id = "IEABOGRQKQAN3QOA", custom_field_id = "IEAAAOH5JUAAABQ5")
#'
wrike_custom_field_on_task <- function(task_id, custom_field_id){
wriker::authenticate()
url <- paste0("https://www.wrike.com/api/v4/tasks/", task_id)
GET <- httr::GET(url, httr::add_headers(Authorization = paste("Bearer", v4_key, sep = " ")))
data <- httr::content(GET)
data2 <- data[["data"]]
custom_fields <- unlist(data$data[[1]]$`customFields`)
custom_field_count <- sum(stringr::str_detect(custom_fields, custom_field_id))
id_extract <- map_dfr(data2, magrittr::extract, c("id"))
results <- data.frame(id = id_extract,
custom_field_count = custom_field_count)
return(results)
}
#' @title Wrike Custom Field URL
#'
#' @description This function gives you the URL to access your account's custom fields
#'
#' @export
#' @examples
#' wrike_custom_field_url()
#' DEPRECATED
wrike_custom_field_url <- function() {
wriker::authenticate()
print(paste0("https://www.wrike.com/api/v3/accounts/", account_id, "/customfields"))
}
#' @title Wrike Custom Field Update
#'
#' @description This function populates a custom field from specified task id
#' @param task_id Wrike task id
#' @param custom_field_id Use \code{\link{wrike_custom_field_url}} function to find id if needed.
#' @param custom_field_value What you want populated
#'
#' @import httr
#' @import purrr
#' @import magrittr
#' @import stringr
#'
#' @export
#' @examples
#' wrike_custom_field_update(task_id = "IEABOGRQKQAN3QOA", custom_field_id = "IEAAAOH5JUAAABQ5", custom_field_value = "myvalue")
#'
wrike_custom_field_update <- function(task_id, custom_field_id, custom_field_value) {
wriker::authenticate()
tmp <- jsonlite::toJSON(data.frame(id = custom_field_id, value = custom_field_value))
tmp2 <- list(customFields = tmp)
url <- paste0("https://www.wrike.com/api/v4/tasks/", task_id)
body <- tmp2
httr::PUT(url, body = body, encode = "json",
add_headers(Authorization = paste("Bearer", v4_key, sep = " ")))
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.