so on my quest to be personally more productive i have realized that the reason the gtd system (created by david allen) is meant to centralize a persons life via one in-box. well for me an inbox literally means my email. if something is not emailed to me it does not exist (i am still trying to figure out a way to make text meaningful to me in this respect, but that is elusive as well). the problem for me is that i have four separate email accounts that i do not like/want to mix. one for work, one for consulting, one for personal stuff, and one i use to sign-up for all of my accounts. so having one inbox for my life is out of the question for now – and i like it that way.
so i decided to implement a gtd style system at work to help me be better at what i am doing and keep myself organized. first i am bound to outlook, and that is not a bad thing in my book, and second this is only for my main job. at first, i used folders to collect everything and had a folder for each area of the company i dealt with and responsibilities, etc. this failed when an email contains information about two different things.
so i decided to create an archive folder, a to be deleted folder (i want to review emails twice before they are deleted), a next actions folder, a follow-up folder, a someday folder and a waiting folder; i also created a projects folder with sub-folders for each project (these are temporary homes for emails within active projects and will be archived into the general archive when the project is closed).
next i created categories for areas of the company (gtd would call these contexts) prefixed with “@”, contexts (a layer of classification based on job responsibilities – such as marketing and sales) prefixed with “_”, actions (they type of action i need to take to close the loop – if any) prefixed with “#”, and indicators (tags that will quickly remind me of the disposition of the email – i.e. !reference if it is just an fyi or !won if it is an order) prefixed with a “!”. i would then create a custom tag for each project which will have no prefix and be used once the project is completed.
so to make things easier on me, i decided to figure out a way to create toolbar buttons that would toggle a specific category. i checked forums and tried out add-ons and eventually posted my issue to twitter. within a day, an outlook champ with the twitter name techniclee was interacting with me and even posted a solution to his blog. while his solution worked well, it did not meet my needs fully. i wanted control over each category location in my toolbar and i was not going to be adding or taking away categories.
so i learned his code and replicated the button control bit for each of my 25 categories. i then used a third party category manager demo to help me create my nice category buttons (color coded of course) and created a button for each area, context, action, and indicator grouped in separate toolbars (that is not necessary, but i am anal about order).
i then looked for a code to create a macro that would send emails directly to the archive folder and lifehacker.com came to the rescue. i even hacked that code to replace the delete button with a button that sends deleted emails to the to be deleted folder.
all in all it is a good solution and the use of categories will help me create custom searches for everything that i need instead of having to remember what folder i put it in.
nathanrelson
August 2, 2010 at 1:55 pm
tried to go back and edit the code to allow for multiple selections, however when I did this, it adds the category to the item the same number of times it is in the count (that is, if their are 3 items selected it adds the category to item 1 once, item 2 twice, and item 3 three times). Here is my code:
Public Sub Category_Name()strThisCat ="Category Name"
Dim olkItm As Object, arrCats As Variant, varCat As Variant, bolFound As Boolean, intCnt As Integer, strNewCat As String, olkItmNo As Object
Set olkItmNo = Outlook.Application.ActiveExplorer.Selection
For x = 1 To olkItmNo.Count
Select Case TypeName(Outlook.Application.ActiveWindow)
Case "Explorer"
Set olkItm = olkItmNo.Item(x)
Case "Inspector"
Set olkItm = Outlook.Application.ActiveInspector.CurrentItem
End Select
arrCats = Split(olkItm.Categories, ", ")
For Each varCat In arrCats
If varCat = strThisCat Then
bolFound = True
Else
strNewCat = strNewCat & ", " & varCat
End If
Next
If Not bolFound Then
strNewCat = strNewCat & ", " & strThisCat
End If
olkItm.Categories = strNewCat
olkItm.Save
Set olkItm = Nothing
Next x
Set olkItmNo = Nothing
End Sub
I will try to find a solution soon
David Lee (TechnicLee)
August 2, 2010 at 4:20 pm
Nathan,
Here’s the code changes that will enable processing all selected items. Both changes go in the CatBtn class. Replace the existing objButton_Click subroutine with the one below. Add the ProcessMsg subroutine. Close and restart Outlook and you should be in business.
Private Sub objButton_Click(ByVal Ctrl As Office.CommandBarButton, CancelDefault As Boolean)
Dim objItm As Object
Select Case TypeName(Outlook.Application.ActiveWindow)
Case “Explorer”
For Each objItm In Outlook.Application.ActiveExplorer.Selection
ProcessMsg objItm
Next
Case “Inspector”
ProcessMsg Outlook.Application.ActiveInspector.CurrentItem
End Select
Set objItm = Nothing
End Sub
Private Sub ProcessMsg(olkItm As Object)
Dim arrCats As Variant, varCat As Variant, bolFound As Boolean, intCnt As Integer, strNewCat As String
arrCats = Split(olkItm.Categories, “, “)
For Each varCat In arrCats
If varCat = strThisCat Then
bolFound = True
Else
strNewCat = strNewCat & “, ” & varCat
End If
Next
If Not bolFound Then
strNewCat = strNewCat & “, ” & strThisCat
End If
olkItm.Categories = strNewCat
olkItm.Save
Set olkItm = Nothing
End Sub
nathanrelson
August 3, 2010 at 10:38 am
So Here is the final code. I created a Macro per category (again it takes less than 5 minutes to do this) and since I have the buttons already it was really quick. Now my GTD set-up works. next task – to create a task from an email!
Public Sub Category_Name()strThisCat = "Category_Name"
Dim arrCats As Variant, varCat As Variant, bolFound As Boolean, intCnt As Integer, strNewCat As String, objItm As Object, objSel As Object
Set objSel = Outlook.Application.ActiveExplorer.Selection
For Each objItm In objSel
strNewCat = ""
arrCats = Split(objItm.Categories, ", ")
For Each varCat In arrCats
If varCat = strThisCat Then
bolFound = True
Else
strNewCat = strNewCat & ", " & varCat
End If
Next
If Not bolFound Then
strNewCat = strNewCat & ", " & strThisCat
End If
objItm.Categories = strNewCat
objItm.Save
Set objItm = Nothing
Next
Set objSel = Nothing
End Sub