Como criar um painel Trello para que as tarefas de 5 painéis sejam reunidas em um?

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?

  1. Vá para 5 quadros e veja cada um separadamente, simplesmente não há tempo e esforço suficientes.





  2. 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.





  3. 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





Exemplo de link: https://trello.com/b/*********/general-tasks - onde os valores ****** serão o Id de um painel específico
: https://trello.com/b/*********/- - ****** 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)
      
      



, , , , , ( ). .     .





Painel pronto
Painel pronto

Eventualmente:





  1. Conseguimos sincronização total de todas as placas de qualquer número de funcionários no trello





  2. Resolvemos o problema para ter acesso visual à data de criação de cada tarefa





  3. 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.








All Articles