Templates were the only thing missing in the current sneaky peak that were part of my old GTD system. But the scripting interface in OmniFocus is solid enough to implement them!
Here is a script that will take an OmniFocus project, replace placeholders with user entered strings, and adjust all dates by some fixed interface--again based on user input. The only thing missing for my needs is automatic duplication of the template project. Unfortunately script-based duplication is a crasher in the current build. So to use a template you must manually duplicate it first, then run the script, then move your populated project to the folder you want it to "live" in.
Download:
the most recent version is available here
To install, download the script and save it in ~/Library/Scripts/Applications/OmniFocus. You can then use Customize Toolbar to add the script to the toolbar in OmniFocus.
To use, first you need to create a project template in OmniFocus. Here's an example template:
I use a top-level folder named Templates, marked inactive, to hold my templates.
To create a template:
1. Create a project with actions and action groups.
2. Include placeholders in the project and action descriptions. Placeholders will be replaced with project-specific text when the template is populated. Placeholders are phrases without spaces, surrounded by double angle quotation marks (also know as guillemets). For example, «RoomName» or «Client». On a US keyboard this punctuation can be typed with Option-\ and Option-Shift-\. The placeholder markers can be changed by editing properties in the script.
3. List all of the placeholders in the last line of the note field of the project. For example, "«RoomName» «Client»". This allows the script to determine what values to prompt you for.
4. If desired, set start and due dates for the project and for any items within the project. Dates will be adjusted when the template is populated.
To populate a template:
1.
Duplicate the template project.
2. Select just the root item of the duplicate project.
3. Run this script from the script menu.
4. When prompted, enter values for each of the placeholders.
5. If prompted, enter a new start or due date from the project.
6. The script will create a duplicate of the project template with placeholders and dates filled it.
7. Drag the new project to the proper folder in your system.
I hope others find this useful. I'll post a new version once the duplication crasher is fixed.