Instructions for Setting up Outlook 2007 for GTD
I’m moving to a new job soon and wanted to take the opportunity to set up the new email system in line with GTD (Getting Things Done) methodology.
Here’s my checklist for setting up the new system on Outlook 2007.
Most tips and code are taken from Simon Guest over at Simon Says but I’ve amended the code (very slightly) to suit my particular needs and naming conventions. For further details and descriptions please follow the links to his blog where I’ve listed them.
1. Create Folders at same level as Inbox
- @ACTION REQD
- @MEETINGS
- @READ
- @REFERENCE
- @PERSONAL
- @WAITING FOR
2. Create Macro for categorising and assigning email as task:
To create a new task from an email, select the email, run the NewTask macro, choose categories and at least one @CATEGORY, in my case @ACTION. Then you can choose to rename the subject title – this will become the new task.
- Function FileFolderEntryId() As StringDim myolApp As Outlook.Application
Dim myNamespace As Outlook.NameSpace
Dim myInbox As Outlook.Folder
Dim rootFolder As Outlook.Folder
Dim subFolders As Outlook.Folders
Dim subFolder As Outlook.Folder
Dim fileFolder As Outlook.Folder
Dim fileEntryID As String
Dim fileFolderName As String
‘Set the folder name – must be at the same level as the inbox
fileFolderName = “@ACTION REQD”
‘ Move the the file folder
Set myolApp = CreateObject(“Outlook.Application”)
Set myNamespace = myolApp.GetNamespace(“MAPI”)
Set myInbox = myNamespace.GetDefaultFolder(olFolderInbox)
Set rootFolder = myInbox.Parent
Set subFolders = rootFolder.Folders
Set subFolder = subFolders.GetFirst
Do While Not subFolder Is Nothing
If subFolder.Name = fileFolderName Then
fileEntryID = subFolder.EntryID
Exit Do
End If
Set subFolder = subFolders.GetNext
Loop
‘ return the entry ID for the file folder
FileFolderEntryId = fileEntryID
End Function
Sub NewTask()
Dim item As MailItem
Dim myolApp As Outlook.Application
Dim myNamespace As Outlook.NameSpace
Dim fileFolder As Outlook.Folder
Dim newName As String
‘ Pick the category
Set item = Outlook.Application.ActiveExplorer.Selection.item(1)
‘ Mark as unread
item.UnRead = False
item.Save
item.ShowCategoriesDialog
‘validate to see whether two categories exist, including an action
If (item.Categories <> “”) Then
If (InStr(item.Categories, “@”) > 0) Then
If (InStr(item.Categories, “,”) > 0) Then
‘ Set the follow up flag
item.MarkAsTask (olMarkNoDate)
‘ Move the item to the file folder
Set myolApp = CreateObject(“Outlook.Application”)
Set myNamespace = myolApp.GetNamespace(“MAPI”)
Set fileFolder = myNamespace.GetFolderFromID(FileFolderEntryId())
‘ Ask for a different name if required
newName = InputBox(“Please enter a subject for the task:”, “Task Subject”, item.TaskSubject)
item.TaskSubject = newName
item.Save
item.Move fileFolder
End If
End If
End If
End Sub
3. Create a rule that will send a email from me and cc’d to me as @WAITING FOR category and file
This is a way of keeping track of requests you’ve sent out in the @WAITING FOR folder.
4. Create a macro that will categorise and send mail to the @REFERENCE Folder
- Sub ToReferenceAndCategorise()
Dim item As MailItem
Dim myolApp As Outlook.Application
Dim myNamespace As Outlook.NameSpace
Dim myInbox As Outlook.Folder
Dim rootFolder As Outlook.Folder
Dim subFolders As Outlook.Folders
Dim subFolder As Outlook.Folder
Dim fileFolder As Outlook.Folder
Dim fileEntryID As String
Dim fileFolderName As String
‘Set the folder name – must be at the same level as the inbox
fileFolderName = “@REFERENCE”
‘ Pick the category
Set item = Outlook.Application.ActiveExplorer.Selection.item(1)
item.ShowCategoriesDialog
‘ Move the the file folder
Set myolApp = CreateObject(“Outlook.Application”)
Set myNamespace = myolApp.GetNamespace(“MAPI”)
Set myInbox = myNamespace.GetDefaultFolder(olFolderInbox)
Set rootFolder = myInbox.Parent
Set subFolders = rootFolder.Folders
Set subFolder = subFolders.GetFirst
Do While Not subFolder Is Nothing
If subFolder.Name = fileFolderName Then
fileEntryID = subFolder.EntryID
Set fileFolder = myNamespace.GetFolderFromID(fileEntryID)
item.Move fileFolder
Exit Do
End If
Set subFolder = subFolders.GetNext
Loop
End Sub
5. Repeat above for Categorise and send to @Waiting For Folder
6. Create a macro that will categorise and send mail to the @READ Folder
This is the same as above but I want to include it under my task list, which I have sorted by folder, so I also include a routine to add a no date follow up flag.
- Sub ToReadAndCategorise()
Dim item As MailItem
Dim myolApp As Outlook.Application
Dim myNamespace As Outlook.NameSpace
Dim myInbox As Outlook.Folder
Dim rootFolder As Outlook.Folder
Dim subFolders As Outlook.Folders
Dim subFolder As Outlook.Folder
Dim fileFolder As Outlook.Folder
Dim fileEntryID As String
Dim fileFolderName As String
‘Set the folder name – must be at the same level as the inbox
fileFolderName = “@READ”
‘ Pick the category
Set item = Outlook.Application.ActiveExplorer.Selection.item(1)
item.ShowCategoriesDialog
‘ Set the follow up flag
item.MarkAsTask (olMarkNoDate)
‘ Move the the file folder
Set myolApp = CreateObject(“Outlook.Application”)
Set myNamespace = myolApp.GetNamespace(“MAPI”)
Set myInbox = myNamespace.GetDefaultFolder(olFolderInbox)
Set rootFolder = myInbox.Parent
Set subFolders = rootFolder.Folders
Set subFolder = subFolders.GetFirst
Do While Not subFolder Is Nothing
If subFolder.Name = fileFolderName Then
fileEntryID = subFolder.EntryID
Set fileFolder = myNamespace.GetFolderFromID(fileEntryID)
item.Move fileFolder
Exit Do
End If
Set subFolder = subFolders.GetNext
Loop
End Sub
7. Create a macro that will create Task and Mail Search Folders
- Sub CreateNewSearchFolder()
Set MyOutlookApplication = Outlook.Application
SearchSubFolders = True
Set MapiNamespace = Application.GetNamespace(“MAPI”)
Set TasksFolder = MapiNamespace.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderTasks).Parent
strS = “‘” & TasksFolder.FolderPath & “‘”
Dim folderName As String
folderName = InputBox(“What category would you like to create a search folder for?:”, “Category”, “”)
Dim objSch As Search
Dim categoryFilter As String
categoryFilter = “(“”urn:schemas-microsoft-com:office:office#Keywords”" LIKE ‘%” & folderName & “%’)”
Dim taskFilter As String
taskFilter = “(“”http://schemas.microsoft.com/mapi/proptag/0x0e05001f”"= ‘Tasks’ AND “”http://schemas.microsoft.com/mapi/id/{00062003-0000-0000-C000-000000000046}/81010003″” <> 2) OR (NOT(“”http://schemas.microsoft.com/mapi/proptag/0×10900003″” IS NULL) AND “”http://schemas.microsoft.com/mapi/id/{00062003-0000-0000-C000-000000000046}/81010003″” <> 2)”
Dim strTag As String
strTag = “RecurSearch”
‘ Create the tasks folder
Set objSch = Application.AdvancedSearch(Scope:=strS, Filter:=categoryFilter & ” AND (” + taskFilter + “)”, _
SearchSubFolders:=True, Tag:=strTag)
objSch.Save (folderName)
‘ Create the mail folder
Set objSch = Application.AdvancedSearch(Scope:=strS, Filter:=categoryFilter, _
SearchSubFolders:=True, Tag:=strTag)
objSch.Save (folderName & ” (Mail)”)
End Sub
8. Create custom toolbars for the above macros
- Right click on toolbar – Customise
- Select commands tab the Macro on Left
- Drag desired macro to toolbar
- Right click on macro button and rename and assign keyboard shortcut if necessary (you need to do this with the customise box still open)
9. Introduce colouring to organise selected folders
- Go to Tools> Organize and complete the following steps:
- select Using Colours
- Change “Colour messages from [you] in Silver”
- Apply Colour
- Turn on the “Show messages sent only to me in Blue”
10. Panic if new job doesn’t use Outlook 2007
Alternatively I could start working through some tips for using Outlook 2003 for GTD, starting here.
I am still a little bemused as to how to deal with SENT items in Outlook, I’ve seen macros directing all sent items back into the inbox to be categorised and filed but I would prefer the category dialog box to pop up when I press send. I’ve currently set up a lot of rules which apply categories on the basis of who I have sent them to but it is not foolproof.






[...] recently gone down the route of setting up my Outlook email system for use with the getting things done (GTD) methodology. This means I work to a zero inbox and have limited context based folders such as @ACTION, [...]
I’m still trying to find a useful way of categorising sent mail items without having to chase my tail and go into the sent items folder.
The following blog post highlights one sure fire way of hacking a solution but it invloves going into the registry – not something I have access to on the work system.
http://www.juergentreml.de/archives/379
Another option is to direct all your sent mail back to your inbox for categorisation but this sounds like a complete mess to me. Some of the comments to this post a quite informative though. I’ve sorted my “All Mail” search folder to display by conversation. That at least brings my non-categorised sent mail into the relevant thread.
http://blogs.msdn.com/outlook/archive/2007/10/05/ultimate-inbox-merging-inbox-and-sent-items-folders.aspx