org-mode: como gerar um relatório de relógio para horas trabalhadas todos os dias?


16

org-clock-reporté incrível; no entanto, ele relata o tempo gasto em cada tarefa. Existe algum comando personalizado usado para gerar um relatório de relógio mostrando as horas trabalhadas, nas tarefas, para cada dia ?

O problema que encontrei é que eu arquivo minhas capturas de TODO em uma file+datetreeentrada. Por exemplo, uma tarefa TODO pode ser arquivada no dia -2, mas eu poderia estar trabalhando nela - ou seja, entrando e saindo - no dia -2, -1 e hoje. Portanto, gerar uma tabela ingenuamente 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:

Observe que a segunda tarefa TODO foi arquivada 2017-09-15 Friday, que foi a data em que eu entrei na tarefa. Mas, na verdade, eu posso ter trabalhado na sexta, sábado, etc. Eu só quero outro comando para mostrar quantas horas eu trabalhei por dia, gerando um relatório como o seguinte:

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

Desde já, obrigado.


Pergunta secundária: este caso de uso ilustra que eu não devo arquivar tarefas TODO em uma árvore de dados?
Covi 23/09

Respostas:


16

Eu acho que você pode considerar isso uma solução parcial para sua pergunta.

Se você incluir :step dayem sua linha de tabela de horário, serão emitidas várias tabelas de relógio - uma por dia para a semana atual em seu exemplo.

Embora isso responda à primeira parte da sua pergunta de mostrar em que tarefas foram trabalhadas por dia, você ainda verá essas tarefas sob uma hierarquia baseada na sua estrutura de dados quando você criou essas tarefas. Se você também incluir maxlevel 0na tabela de horários, verá apenas o total de cada dia sem nenhuma tarefa listada, o que acho que fornece os dados solicitados, embora não exatamente no formato de lista simples que você queria.

Link para a parte apropriada do manual: http://orgmode.org/manual/The-clock-table.html

A segunda parte da pergunta sobre se as tarefas do TODO são adequadas para uma estrutura de dados não é, penso eu, uma escolha pessoal. Por um lado, facilita a localização de tarefas em um arquivo grande de acordo com quando foi adicionado (embora eu suspeite que você possa fazer a mesma coisa com uma exibição personalizada da agenda), mas, por outro, impede o agrupamento de tarefas em hierarquias. para projetos de maior escala. A escolha entre essas opções depende de como você deseja usar o modo organizacional.

Minha escolha pessoal seria que as árvores de dados são boas para entradas do tipo "diário" (por exemplo, notas sobre o que foi feito todos os dias), mas com tarefas arquivadas em uma hierarquia de projetos, mas não existe um caminho único.


7
Obrigado! #+BEGIN: clocktable :maxlevel 0 :scope file :step day :tstart "<-1w>" :tend "<now>" :compact tparece funcionar bem e fornece o formato desejado. A seguir: existe uma maneira fácil de vincular isso a algumas chaves, para que eu possa exibir facilmente uma tabela em qualquer lugar de qualquer arquivo organizacional? Atualmente eu tenho que colocar isso em um arquivo fixo, posição fixa e depois C-c C-x C-ratualizá-lo.
Covi 27/09

2
@Covi. Ainda bem que ajudou. Desculpe pelo tempo de resposta lento. Embora você possa escrever uma função interativa e vinculá-la a uma tecla para fazer isso, como todo o texto, por que não gravar o processo como uma macro de teclado (digite as linhas de início / fim da tabela de horário, mova para cima, faça Cc Cc para recalcá-la) , salve essa macro como uma nova função (que você pode colocar no seu init.el)? Links relevantes: emacswiki.org/emacs/KeyboardMacrosTricks e gnu.org/software/emacs/manual/html_node/emacs/…
Stuart Hickinbottom

Existe uma maneira de iniciar um relatório sempre em um determinado dia da semana, como segunda-feira? por exemplo. Se eu estiver no meio desta semana e :tstart "<-2w>"estiver pronto , isso também me mostra os últimos dias da semana anterior, enquanto eu só quero ver a última semana e esta semana. Algo parecido com org-agenda-start-on-weekday?
kshenoy

@kshenoy Use :block thisweekpara ver apenas os 7 dias desta semana a partir de segunda-feira. Isso substituirá :tstarte :tend. Se você deseja um relatório separado que mostre os 7 dias da semana anterior, use :block lastweek.
spk
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.