org-mode: comment générer un rapport d'horloge pour les heures travaillées chaque jour?

18

org-clock-reportest génial; cependant, il indique le temps consacré à chaque tâche. Existe-t-il une commande personnalisée que vous utilisez pour générer un rapport d'horloge indiquant les heures travaillées, d'une tâche à l'autre, pour chaque jour ?

Le problème que j'ai rencontré est que je dépose mes captures TODO sous une file+datetreeentrée. Par exemple, une tâche TODO peut être déposée le jour -2, mais je pourrais y travailler - c'est-à-dire les pointages d'entrée et de sortie - les jours -2, -1 et aujourd'hui. Donc, générer une table naïvement ne fera que montrer quelque chose comme:

#+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:

Notez que la deuxième tâche TODO a été classée sous 2017-09-15 Friday, qui était la date à laquelle j'ai entré la tâche. Mais vraiment, j'aurais pu y travailler le vendredi, le samedi, etc. Je veux juste une autre commande pour montrer combien d'heures j'ai travaillé chaque jour, en générant un rapport tel que le suivant:

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

Merci d'avance.

Covi
la source
Question secondaire: ce cas d'utilisation illustre-t-il que je ne devrais pas classer les tâches TODO sous un arbre de données?
Covi

Réponses:

18

Je pense que vous pourriez considérer cela comme une solution partielle à votre question.

Si vous incluez :step daydans votre ligne de table d'horloge, vous obtiendrez plusieurs tables d'horloge émises - une par jour pour la semaine en cours dans votre exemple.

Bien que cela réponde à la première partie de votre question de montrer quelles tâches ont été travaillées par jour, vous verrez toujours ces tâches sous une hiérarchie basée sur votre structure d'arbre de données lorsque vous avez créé ces tâches. Si vous incluez également maxlevel 0dans la table d'horloge, vous ne verrez que le total de chaque jour sans aucune tâche répertoriée, ce qui, je pense, vous donne les données que vous avez demandées, mais pas tout à fait dans le format de liste simple que vous vouliez.

Lien vers la partie appropriée du manuel: http://orgmode.org/manual/The-clock-table.html

La deuxième partie de la question de savoir si les tâches TODO conviennent bien à une structure d'arbre de données est, je pense, du choix personnel. D'une part, il permet de localiser facilement les tâches dans un fichier volumineux selon le moment où il a été ajouté (bien que je soupçonne que vous pourriez faire la même chose avec une vue d'agenda personnalisée), mais d'autre part, il vous empêche de regrouper les tâches en hiérarchies pour des projets à plus grande échelle. Le choix entre ces options dépend de la façon dont vous souhaitez utiliser le mode organisationnel.

Mon choix personnel serait que les arbres de données soient bons pour les entrées de type "journal" (par exemple, les notes sur ce qui a été fait chaque jour), mais avec des tâches classées dans une hiérarchie de projet, mais il n'y a pas de bonne façon.

Stuart Hickinbottom
la source
7
Je vous remercie! #+BEGIN: clocktable :maxlevel 0 :scope file :step day :tstart "<-1w>" :tend "<now>" :compact tsemble bien fonctionner et donne le format souhaité. Suivi: existe-t-il un moyen facile de lier cela à certaines clés, afin que je puisse facilement faire apparaître une telle table n'importe où dans n'importe quel fichier org? Actuellement, je dois mettre cela dans un fichier fixe, une position fixe, puis C-c C-x C-rle mettre à jour.
Covi
2
@Covi. Heureux que cela ait aidé. Désolé pour le temps de réponse lent. Bien que vous puissiez écrire une fonction interactive et la lier à une touche pour le faire, comme tout est du texte, pourquoi ne pas enregistrer le processus en tant que macro de clavier (tapez les lignes de début / fin de la table d'horloge, déplacez-vous vers le haut, faites Cc Cc pour le recalculer) , puis enregistrez cette macro en tant que nouvelle fonction (que vous pourriez mettre dans votre init.el)? Liens pertinents: emacswiki.org/emacs/KeyboardMacrosTricks et gnu.org/software/emacs/manual/html_node/emacs/…
Stuart Hickinbottom
Existe-t-il un moyen de démarrer un rapport toujours un certain jour de la semaine, comme le lundi? par exemple. Si je suis au milieu de cette semaine et que je me suis mis :tstart "<-2w>", ça me montre aussi les derniers jours de la semaine avant la dernière alors que je veux juste voir la dernière semaine et cette semaine. Quelque chose de similaire à org-agenda-start-on-weekday?
kshenoy
@kshenoy Utilisez :block thisweekpour voir seulement les 7 jours de cette semaine commençant lundi. Ce sera prioritaire :tstartet :tend. Si vous voulez un rapport séparé qui montre les 7 jours de la semaine précédente, utilisez :block lastweek.
spk