Warning: Sadly this no longer works from the Things menu bar due to sandboxing. You can still run this script outside of Things, and it will work just the same. {:.warn}

Calendar blocking (the process of marking of pieces of time in your calendar to work on a given task) can be a real productivity booster. Not only does it help you in planning out your day it also creates a visible representation of what you have done in a week.

Because I already keep track of the things I want to do in the amazing task app Things3 I added a simple workflow to copy over selected todo’s to my calendar app of choice Fantastical. This keeps the content of my todo’s consistent and removes a lot of friction with daily and weekly planning.

Adding custom scripts to Things3

Things has a great option to add custom script to the menu bar of the application. This is done by:

  1. Quitting Things
  2. Creating the directory ~/Library/Application Support/Cultured Code/Things Scripts using the Terminal:
    $ mkdir ~/Library/Containers/com.culturedcode.ThingsMac/Data/Library/Application\ Support/Cultured\ Code/Things\ Scripts
  3. Change to the dir using:
    $ cd ~/Library/Containers/com.culturedcode.ThingsMac/Data/Library/Application\ Support/Cultured\ Code/Things\ Scripts  
  4. Now you can add custom scripts to this directory

Creating the script

In the directory ~/Library/Containers/com.culturedcode.ThingsMac/Data/Library/Application Support create the script addToFantastical.scpt:

(*
Purpose: Add a selected ToDo to Fantastical
2021-03-25:
  - Initial version
*)
 
on run
	tell application "Things3"
		set title to name of selected to dos
		set description to notes of selected to dos
		set eventLength to " 1 hour"
		set input to (title & eventLength) as string
 
		tell application "Fantastical"
			parse sentence input notes description
		end tell
	end tell
end run

Get a copy at GitHub

More information about adding scripts can be found on the official support page

Running the script

The script can be accessed from the things3 menu:
Menu Bar item
Menu Bat item - context

Warning: When you run these script’s for the first time macOS will ask you for permissions {:.info}

Running the script will:

  1. Copy the name and note of the current selected todo
  2. Open up Fantastical in quick add mode
  3. Add a event with the name of the todo using the note of the todo as extra content and will set a 1 hour duration of the event

You can customize the script if you like to change the duration of the event or to add the event to a specifiek calendar. For more information see the Dictionary page of the Fantastical app in the AppleScript editor.