¿Cómo crear un panel de Trello para que las tareas de 5 paneles se recopilen en uno?

Problemático

En mi trabajo, enfrenté la necesidad de organizar las tareas de los empleados del departamento de analítica en una sola ventana y construir un esquema transparente para evaluar su carga de trabajo.





¿Cuales son las opciones?

Al comparar varias herramientas y administradores de tareas, la elección recayó en uno de los actores más populares del mercado: Trello. Sin embargo, inmediatamente después de elegir el programa, surgió un nuevo obstáculo. La versión gratuita de esta aplicación carecía de la capacidad de sincronizar los tableros de varios empleados juntos sin servicios de terceros, como Zapier, donde también se requiere una licencia para un gran proyecto.





¿Cuál es el significado de unificación?

  1. Vaya a 5 tableros y vea cada uno por separado, simplemente no hay suficiente tiempo y esfuerzo.





  2. Si no sincroniza tableros en una pantalla, será extremadamente difícil comparar a un empleado con otro en términos de la carga de trabajo actual.





  3. Los empleados quieren comprender la carga de trabajo de cada uno de los miembros del equipo y, para ello, nuevamente, es necesario unir todo de alguna manera.     





Esta funcionalidad de sincronización está disponible de forma gratuita en algunos competidores que se especializan en administradores de tareas ágiles, pero Trello me resultaba más familiar, ya que lo he estado usando para el control personal de tareas durante varios años. Por lo tanto, para introducir un administrador de tareas de comando común en el trabajo del departamento, solo queda un problema por resolver:





¿Cómo sincronizar tableros de 5 empleados en un tablero sin pagar una licencia en Trello o transferir servicios como Zapier?





La solución del 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





Ejemplo de enlace: https://trello.com/b/*********/general-tasks - donde los valores ****** serán la identificación de un tablero 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)
      
      



, , , , , ( ). .     .





Tablero listo
Tablero listo

Finalmente:





  1. Obtuvimos una sincronización completa de todos los tableros de cualquier número de empleados en trello





  2. Solucionamos el problema para tener acceso visual a la fecha de creación de cada tarea.





  3. Tenemos una base para analizar la productividad de los empleados en cualquier aspecto, gracias a la capacidad de agregar varias mejoras nuevas al código, expandiendo el código basado en la Api de Trello, en base a la lógica de negocios de su empresa y las capacidades del lenguaje R.








All Articles