A small script to generate bulleted reports from my things 3 tasks
This repository has been archived on 2026-04-05. You can view files and clone it, but you cannot make any changes to it's state, such as pushing and creating new issues, pull requests or comments.
Find a file
2023-07-20 11:14:49 +09:00
.envrc Add envrc 2022-08-23 10:00:22 +09:00
.gitignore Ignore pycache 2022-12-15 10:16:47 +09:00
dump.py Fix an issue where tasks weren't being sorted 2023-07-14 18:19:42 +09:00
emojis.txt Remove hungry caterpiller emoji 2022-10-24 09:55:38 +09:00
README.md Create README 2022-12-15 10:30:23 +09:00
REFACTOR.md Commit ideas for refactoring 2023-07-20 11:14:49 +09:00
requirements.txt Initial commit 2022-06-28 09:53:22 +09:00
shell.nix Silence pip warning in nix-shell 2023-05-29 14:23:47 +09:00

things-3-report

A small script to generate bulleted reports from my Things 3 tasks

Usage

The environment should be provided by nix-shell. Alternatively you can install the requirements directly with

$ pip install -r requirements.txt

To run the script, pass in the tag or list of tags to filter on. Projects and Tasks lacking one of the specified tags will be excluded from the generated report. I have a Report tag which I use for this. If a project is tagged with the tag, all tasks are considered tagged even if not explicitly done so.

Specific functionality

I have also included a few pieces of additional functionality:

  • The project is headed with a set of 3 randomly selected emojis from emojis.txt
  • If you have a person's name in the task or project title, you can add an @<Persons Name> tag to the task or project and the script will automatically replace the vowels in their name with unicode that looks similar. This allows you to post the list on slack without generating mentions.
  • Adding a code block that begins with report will cause the script to dump the contents into the end of the generated message. This can be used to add notes to the generated output.
  • Be default the script draws from today's current list of tasks. If you specify --signoff it will instead draw on completed tasks from your logbook. (This is useful for an end of the day message).

Example Usage:

Given a set of tasks tagged Report

Project named "Some Project" tagged as Report:
  containing two tasks (not necessarily tagged) "Task 1" and "Task 2"

A top level task called some task with a notes filed containing
```report
(#9999)[https://example.com]
`` ` <-- No space there but it's hard to escape these ticks
$ python dump.py Report

will generate:

:emoji: :emoji: :emoji:
  - Some Project
    - Task 1
    - Task 2
  - Some Task (#9999)(https://example.com)