Problematic
In my work, I faced the need to organize the tasks of the analytics department employees in a single window and build a transparent scheme for assessing their workload.
What are the options?
Comparing various tools and task managers, the choice fell on one of the most popular market players - Trello. However, immediately after choosing the program, a new obstacle arose. The free version of this application lacked the ability to synchronize the boards of several employees together without third-party services, such as Zapier, where a license is also required for a large project.
What is the meaning of unification?
Go into 5 boards and view each one separately, there is simply not enough time and effort.
If you do not sync boards on one screen, it will be extremely difficult to compare one employee with another in terms of the current workload.
Employees want to understand the workload of each of the team members, and for this, again, you need to somehow bring everything together.
Such synchronization functionality is available for free from some competitors that specialize in agile task managers, but Trello was just more familiar, since I have been using it for personal control of tasks for several years. Thus, in order to introduce a common command task manager into the work of the department, only one problem remains to be solved:
How to synchronize boards of 5 employees in one dashboard without paying for a license in Trello or transfer services like Zapier?
:
trello R, API , .
:
API https://trello.com/app-key ( Trello )
,
R. . R RStudio.
:
API Trello — «trelloR»
— «lubridate»
— «dplyr»
CRAN install.packages, github install_github:
remotes::install_github("jchrom/trelloR")
install.packages("lubridate", dependencies = TRUE)
install.packages("dplyr ", dependencies = TRUE)
API :
# token
setwd("C:\\*********\\R_script\\trello")
# token
my_token = get_token("my_app", key = "", secret = "",
expiration = c( "never"))
, , , :
trelloadd <- function(delcard = NULL,
addcard = NULL,
nlista = NULL){
#
ishod_tab <- get_list_cards(addcard)
#
bid = get_id_board(delcard)
#
lid <- get_board_lists(bid)$id[nlista]
#
cid<-get_list_cards(lid)
# ,
if (length(cid$id)>0) {
for (i in 1:length(cid$id)) {
delete_resource(resource = "card", id = cid$id[i])
}
}else{
print("no-del")
}
#
dateList<- data.frame(dateadd = NA)
for (i in 1:length(ishod_tab$id)) {
cardID <- ishod_tab$id[i]
dateList[i,1] <- strtoi(strtrim(cardID, 8), 16L)
}
dateList$dateadd <-as.POSIXct(dateList$dateadd, origin = "1970-01-01")
#
if (length(ishod_tab$name)>0) {
for (i in 1:length(ishod_tab$name)) {
payload = list(
idList = lid,
name = ishod_tab$name[i],
desc = paste0(ishod_tab$desc[i],"Date Add: " ,dateList$dateadd[i], "
", floor(as.vector(difftime(today(),dateList$dateadd[i], units='days'))), " "),
start = ishod_tab$start [i],
due = ishod_tab$due [i],
pos = "bottom"
)
r <- create_resource("card", body = payload)
}
}else{
print("Ok")
}
if (nrow(bind_rows(ishod_tab$labels[]))>0) {
# ()
bid = get_id_board(delcard)
lid <- get_board_lists(bid)$id[nlista]
cid <-get_list_cards(lid)
#
nlab <- which( lapply(ishod_tab$labels, length)!=0 %in% T)
for (i in nlab) {
labl <- ishod_tab$labels[[i]]
for (xi in 1:nrow(labl)) {
r <- add_label(cid$id[i], color = ishod_tab$labels[[i]][xi,4],
name = ishod_tab$labels[[i]][xi,3] )
}
}
}else{
print("no_lable")
}
}
:
delcard - id
addcard - id
nlista -
delcard
id , , id
addcard
, delcard , :
get_board_lists("https://trello.com/b/*****/1",
query = list(customFieldItems = "true")
)
, R id
.
:
# 1 ####
trelloadd(delcard = "od*****W",
addcard = "600**********04",
nlista = 2)
# 2 ####
trelloadd(delcard = "od*****W",
addcard = "5fc4********24",
nlista = 3)
# 3 ####
trelloadd(delcard = "od*****W",
addcard = "5e94*********8ce",
nlista = 4)
# 4 ####
trelloadd(delcard = "od*****W",
addcard = "5faa*********c522",
nlista = 5)
# 5 ####
trelloadd(delcard = "od*****W",
addcard = "60744*******3394",
nlista = 6)
# 6 ####
trelloadd(delcard = "od*****W",
addcard = "5e73******b07",
nlista = 7)
Eventually:
We got full synchronization of all boards of any number of employees in trello
We solved the problem in order to visually have access to the creation date of each task
We have a foundation for analyzing employee productivity in any aspect, thanks to the ability to add various new improvements to the code, expanding the code based on the Trello Api, based on the business logic of your company and the capabilities of the R language.