Generating Reports and Exports with Timing

By now, your time is hopefully well categorized into projects and you have an idea where your time goes.

But how do you use that information, e.g. to bill your clients?

While Timing can't create invoices by itself, it has plenty of options to help you do so.
First, select the Reports tab in the sidebar: This screen lets you quickly generate a report with one of the built-in presets, or customize the report to your liking.

The main area contains the actual report data, arranged according to the settings in the sidebar:

  • Presets. Lets you select one of Timing's default reports:
    • Timesheet. Shows how much time you spent each day, broken down per project.
      Time that you explicitly accounted for (with time entries) is listed next to the remaining "app time" you spent on those projects.
    • Timesheet (Week + Day). Like the above, but broken down per week and per day rather than per project.
      If you want to prepare a timesheet for a client, this preset is a good start.
      You might also want to restrict the report to individual projects by selecting them in the project list.
    • Weekly Snippet. When I used to work at Google, we'd send a weekly report of what we did to our managers.
      This report facilitates that: It contains everything you did, broken down per week.
      It is particularly useful if you block your time into time entries.
    • Time Per Project. Breaks down how much time you spent on each project.
      This report is similar to the "Projects" card on the Overview screen.
    • Time Per App. Breaks down how much time you spent on each app.
      This report is similar to the "Apps" card on the Overview screen.
    • Time Per Document. Like the above, but further broken down by which documents and websites you viewed.
    • Ultra-Detailed. This report contains as much information as possible. Only useful in a few cases.
    • Raw Time Entries. Displays all time entries in a chronological fashion, similar to how they are stored in the database.
      Mostly useful if you want to further process this data using other tools.
    • Raw App Usage. Like the above, but for app activities.
  • Group By. Lets you group the data in your report by time period (Year/Month/Week/Day) or by project.
    • You can also group by “top-level project” or “second-level project”. For example, if you have a project called “Project A” as a sub-project of “Client X”, “Client X” would be the top-level project and “Project A” the second-level project. This should make it easier to generate reports spanning multiple sub-projects. (Available in Timing Expert.)
  • Include. What kind of information to include in the report. (Available in Timing Expert.)
    The more you select, the longer and more detailed the reports gets.
    • As subgroup. Specifies whether you want the report to display time entry titles or application names as a separate level.
      This gives the report a bit more structure, possibly making it easier to browse.
      Note that this only affects how reports are displayed in Timing, but not how they are exported.
    • Even if already included in a Time Entry. When a particular time range is covered by a time entry, all app usage inside that time range becomes "absorbed" by that time entry.
      Accordingly, if this option is unchecked, those activities won't show up in the report at all – they don't contribute to the time total anyway (because that total is already provided by the enclosing time entry).

When you are satisfied with the data in your report, you can export it:

  • File Format. Timing lets you choose among four export formats:
    • Excel. Exports your data as an XLSX spreadsheet for further processing.
    • CSV. "Comma-Separated Values" format. Mostly useful for importing this data into other apps, such as your invoicing tool.
    • PDF / Print. The perfect format when you want to provide a timesheet along your invoice, for example.
    • HTML. Looks similar to the PDF format, but better suited for manual customization or hosting on a website.
    • JSON. This is a format that can be easily read by other software. Helpful in case you'd like to send the export to a script for further processing.
  • Duration Format. Lets you customize how durations are output in exports:
    • XX:YY:ZZ. Would output e.g. 01:02:03 for one hour, two minutes and three secounds.
    • Xh Ym Zs. Would output 1h 2m 3s.
    • Seconds only. Would output 3723 – this is useful for e.g. latter adding several durations in Excel.
  • Group Activities in Export. If selected, the criteria selected in Group By above will also be reflected as groups in the report.
    This is only available for PDF and HTML export, as table-style exports can't really be grouped.
  • Include Short Entries. Whether to include entries of the form "(Entries shorter than 1m each)" in the final export.

Automating Exports

There are many use cases in which an automated capability for generating exports would be useful. For this purpose, we recommend creating an AppleScript that contains exactly the report settings and projects you need, then run that e.g. once per month. You can find an example of such a script on the corresponding documentation page.

In addition, here is a short AppleScript snippet that generates the start and end dates for a given year and month, which you can then plug into the script mentioned above to generate a report for that month:

set desiredYear to 2021
set desiredMonth to 8

set anchorDate to the current date
set the year of anchorDate to desiredYear
set the month of anchorDate to desiredMonth
set the day of anchorDate to 1
set the hours of anchorDate to 0
set the minutes of anchorDate to 0
set the seconds of anchorDate to 0

set startDate to anchorDate
copy startDate to endDate
set the month of endDate to desiredMonth + 1
set endDate to (endDate - 1 * (minutes))

Take our free 5-day course to get started with Timing.