Temporizador de tareas en Google Sheets con Apps Script – Project Management
Columnas contendrá nuestra hoja de excel en Google Sheets
- Estado de la tarea (En espera, Iniciar, Pausa, Continuar, Terminado)
- Titulo de la tarea
- Fecha inicio de la tarea
- Fecha Fin de la tarea
- Tiempo usado para realizar la tarea en formato h:mm
Creamos una primer tarea en nuestro Excel llenando únicamente las siguientes columnas
- Columna Status, convertimos la celda en un dropdown creando en está columna un Data validation permitiendo únicamente los valores de estado que definimos anteriormente.
- Columna Task, ingresamos el titulo de la tarea
– Opcionalmente podemos ocultar la columna Z.
Agregamos el código Apps script necesario para ejecutar el Temporizador
Para esto nos vamos a herramientas, editor de secuencia de comandos y en el archivo Code.gs adjuntamos el código que nos va a permitir realizar el tracking del tiempo para cada tarea.
El código Google Apps scripts a continuación:
const spreadSheet = SpreadsheetApp.getActiveSpreadsheet(); const currentSheet = spreadSheet.getActiveSheet(); function onEdit(e){ var range = e.range; var column = range.getColumn(); var row = range.getRow(); var startDateCell = currentSheet.getRange(row,3); var finishedDateCell = currentSheet.getRange(row,4); var clockCell = currentSheet.getRange(row,5); var timerCell = currentSheet.getRange(row,26); var dropdown = currentSheet.getRange(row,1).getValue(); var currentTime = new Date().getTime(); var lastTime = timerCell.getValue(); var msTime = 0; if(column != 1){ return; } switch (dropdown) { case 'Start': startDateCell.setValue(new Date()).setNumberFormat('dd/MM/yyyy'); finishedDateCell.setValue(''); clockCell.setValue(''); timerCell.setValue(currentTime); break; case 'Pause': if (lastTime > 1000000000000){ msTime = currentTime - lastTime; timerCell.setValue(msTime); } break; case 'Continue': if (lastTime < 1000000000000){ msTime = timerCell.getValue(); timerCell.setValue(currentTime - msTime); } break; case 'Finished': var min = 0; var sec = 0; var hr = 0; var minStr = ""; var hrStr = ""; if (lastTime > 1000000000000){ msTime = currentTime - lastTime; timerCell.setValue(msTime); } else { msTime = timerCell.getValue(); } sec = Math.floor(msTime / 1000); min = Math.floor(sec / 60); hr = Math.floor(min / 60); min = Math.floor(min % 60); minStr = min > 9 ? String(min) : "0" + String(min); hrStr = hr > 9 ? String(hr) : "0" + String(hr); clockCell.setValue(hrStr + ":" + minStr); finishedDateCell.setValue(new Date()).setNumberFormat('dd/MM/yyyy'); break; } }
Agregamos un activador de proyecto
Finalmente en el editor de código de Google Apps scripts, agregamos un activador de proyecto para la función onEdit: en el editor de código Google Apps script nos vamos al menú editar, activadores del proyecto activo y en la pantalla que nos aparece damos clic en añadir activador, lo asignamos a la función onEdit definida en nuestro código y en tipo de evento seleccionamos al editarse.
Aquí les dejo el código para Google Apps script en github
Aquí les dejo la liga a la hoja de excel en Google Sheets donde la pueden clonar: Google Sheets
Leave a Comment