org-mode: ¿cómo generar un informe de reloj para las horas trabajadas cada día?

18

org-clock-reportes increíble; sin embargo, informa el tiempo dedicado a cada tarea. ¿Hay algún comando personalizado que use para generar un informe de reloj que muestre las horas trabajadas, en todas las tareas, para cada día ?

El problema que he encontrado es que presento mis capturas de TODO en una file+datetreeentrada. Por ejemplo, una tarea TODO podría archivarse el día -2, pero podría estar trabajando en ella, es decir, registrando la entrada y la salida, el día -2, -1 y hoy. Entonces, generar una tabla ingenuamente solo mostrará algo como:

#+BEGIN: clocktable :maxlevel 4 :scope file :block thisweek 
#+CAPTION: Clock summary at [2017-09-23 Sat 11:48], for week 2017-W38.
| Headline                              | Time      |         |       |       |
|---------------------------------------+-----------+---------+-------+-------|
| *Total time*                          | *1d 0:12* |         |       |       |
|---------------------------------------+-----------+---------+-------+-------|
| 2017                                  | 1d 0:12   |         |       |       |
| \_  2017-09 September                 |           | 1d 0:12 |       |       |
| \_    2017-09-11 Monday               |           |         |  1:23 |       |
| \_      look into AAA BBBB project    |           |         |       |  
| \_    2017-09-15 Friday               |           |         |  3:33 |       |
| \_      look into XXX YYYY project    |           |         |       |  3:33 |
#+END:

Tenga en cuenta que la segunda tarea TODO se archivó en 2017-09-15 Friday, que era la fecha en que ingresé la tarea. Pero realmente, podría haber trabajado en ello el viernes, sábado, etc. Solo quiero que otro comando muestre cuántas horas he trabajado cada día, generando un informe como el siguiente:

2017-09-11 Monday     xx hours yy mins worked (across all tasks)
...
2017-09-15 Friday     zz hours tt mins worked (across all tasks)

Gracias por adelantado.

Covi
fuente
Pregunta secundaria: ¿este caso de uso ilustra que no debo archivar tareas TODO en un árbol de fechas?
Covi

Respuestas:

17

Creo que podría considerar esto como una solución parcial a su pregunta.

Si incluye :step dayen su línea de tabla de reloj, se emitirán varias tablas de reloj, una por día para la semana actual en su ejemplo.

Si bien esto responde a la primera parte de su pregunta de mostrar en qué tareas se trabajó por día, aún verá esas tareas bajo una jerarquía basada en su estructura de árbol de fechas de cuándo creó esas tareas. Si también lo incluye maxlevel 0en la tabla de reloj, solo verá el total de cada día sin ninguna tarea enumerada, lo que creo que le brinda los datos que solicitó, aunque no del todo en el formato de lista simple que deseaba.

Enlace al fragmento apropiado del manual: http://orgmode.org/manual/The-clock-table.html

La segunda parte de la pregunta sobre si las tareas de TODO son una buena opción para una estructura de árbol de fechas es, creo, una decisión personal. Por un lado, facilita la localización de tareas en un archivo grande de acuerdo con el momento en que se agregó (aunque sospecho que podría hacer lo mismo con una vista de agenda personalizada), pero por otro lado evita que agrupe las tareas en jerarquías para proyectos a gran escala. Elegir entre esas opciones depende de cómo quiera usar el modo org.

Mi elección personal sería que los datetrees son buenos para las entradas de tipo "diario" (por ejemplo, notas sobre lo que se hizo cada día), pero con tareas archivadas en una jerarquía de proyecto, pero no hay una única forma correcta.

Stuart Hickinbottom
fuente
77
¡Gracias! #+BEGIN: clocktable :maxlevel 0 :scope file :step day :tstart "<-1w>" :tend "<now>" :compact tparece funcionar bien y le da el formato deseado. Seguimiento: ¿hay una manera fácil de vincular esto a algunas teclas, de modo que pueda extraer fácilmente dicha tabla en cualquier lugar en cualquier archivo de organización? Actualmente tengo que poner esto en un archivo fijo, posición fija, y luego C-c C-x C-ractualizarlo.
Covi
2
@Covi. Me alegra que haya ayudado. Perdón por el lento tiempo de respuesta. Si bien puede escribir una función interactiva y vincularla a una tecla para hacerlo, ya que todo es texto, ¿por qué no grabar el proceso como una macro de teclado? , luego guarde esa macro como una nueva función (que podría poner en su init.el)? Enlaces relevantes: emacswiki.org/emacs/KeyboardMacrosTricks y gnu.org/software/emacs/manual/html_node/emacs/…
Stuart Hickinbottom
¿Hay alguna manera de comenzar un informe siempre en un determinado día de la semana, como el lunes? p.ej. Si estoy a mediados de esta semana y configuro :tstart "<-2w>", también me muestra los últimos días de la semana anterior, mientras que solo quiero ver la última semana y esta semana. Algo similar a org-agenda-start-on-weekday?
kshenoy
@kshenoy Use :block thisweekpara ver solo los 7 días de esta semana que comienzan el lunes. Eso anulará :tstarty :tend. Si desea un informe separado que muestre los 7 días de la semana anterior, use :block lastweek.
spk