Problemático
Em meu trabalho, enfrentei a necessidade de organizar as tarefas dos funcionários do departamento de análise em uma única janela e construir um esquema transparente para avaliar sua carga de trabalho.
Quais são as opções?
Comparando várias ferramentas e gerenciadores de tarefas, a escolha recaiu sobre um dos players mais populares do mercado - o Trello. Porém, logo após a escolha do programa, surgiu um novo obstáculo. A versão gratuita deste aplicativo não tinha a capacidade de sincronizar as placas de vários funcionários em conjunto sem serviços de terceiros, como Zapier, onde uma licença também é necessária para um grande projeto.
Qual é o significado da unificação?
Vá para 5 quadros e veja cada um separadamente, simplesmente não há tempo e esforço suficientes.
Se você não sincronizar placas em uma tela, será extremamente difícil comparar um funcionário com outro em termos de carga de trabalho atual.
Os funcionários querem entender a carga de trabalho de cada um dos membros da equipe e, para isso, mais uma vez, é preciso reunir tudo de alguma forma.
Essa funcionalidade de sincronização está disponível gratuitamente por alguns concorrentes que se especializam em gerenciadores de tarefas ágeis, mas o Trello era apenas mais familiar, já que venho usando-o para controle pessoal de tarefas há vários anos. Assim, a fim de introduzir um gerenciador de tarefas de comando comum no trabalho do departamento, resta apenas um problema a ser resolvido:
Como sincronizar placas de 5 funcionários em um painel sem pagar por uma licença no Trello ou serviços de transferência como Zapier?
A solução do problema:
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)
Eventualmente:
Conseguimos sincronização total de todas as placas de qualquer número de funcionários no trello
Resolvemos o problema para ter acesso visual à data de criação de cada tarefa
Temos uma base para analisar a produtividade dos funcionários em qualquer aspecto, graças à capacidade de agregar várias novas melhorias ao código, ampliando o código baseado na Api Trello, com base na lógica de negócio da sua empresa e nas capacidades da linguagem R.