Capturing Doctor Visits & Sickdays

At work, We need to fill up a timesheet every month. For those of you who are not familiar with the concept, this is usually a spreadsheet with a column for each month of the year and cells for the days of each month. You fill in the code (V for vacation, S for a sickday, etc.) The spots you took off from work. There might be a few more variations of these, but this is the general idea.

To me, timesheets are a pain in the rear. You need to check your calendar (or agenda in my case) to see when you took the off days, then you need to mark them down on the spreadsheet, and then you need to export them to a PDF to sign the thing and send to your boss. I’m horrible at keeping track of these things because they don’t fit my workflow. A vacation or a doctor visit gets marked down on the agenda as an event with a location, unique to its settings. This makes it difficult to go back and catch them when it’s time to mark them.

I was considering the idea of using tags for a while, but I usually only use tags for people on the agenda, when a certain task or an event has to do with them. I could have used a category, but that seemed silly to have a category for a certain thing just because it’s hard to find it on the agenda. Then an idea hit me when I was watching the Emacs Conference, and I noticed a few of the presenters using tables.

A table! of course! Not only do I could mark down the exact day for the sickday, but I can also fill in if it was half a day or a full day, which is another thing I need to mark on the sheet. It took some time to figure out how to capture to a table… but the results were well worth it. Here, take a look:

Looks great, doesn’t it? Not only I have a nice organized place to mark down these days, I can also link to the event itself on the agenda (right now it says journal, I should change that). I can even go into the table and add separators for months and make it clearer. Now, if only Emacs could have filled the excel sheet I need to fill and sign for me…

Here’s the code that makes this work:

("js" "Sickdays" table-line (file+olp "~/Archive/" "Personal" "Sickdays") "| %u | %^{(H)alf/(F)ull} | %? |")

table-line is the magic word that tells org-mode to populate the next available line in the table, so it doesn’t matter what’s before it. I can add and remove things as I please. And then the lines just work as is, using org-mode’s powerful table format.