GTD “!Daily Disciplines” Category

Michael Hyatt

Registered
I just blogged about a category context I am using for my routine of daily disciplines. It is called “!Daily Disciplines.” You can find it here.
 

CSGiles

Registered
Hi Michael,

I very much like your Daily Disciplines idea. Currently I keep lists of these things in the Notes section of Outlook but it would be much more convenient to have them in the Taskpad view in Calendar.

The problem I've never solved is how to handle recurring Tasks in Taskpad. If I were to set up a daily reoccuring Task, as soon as I check it off in Taskpad the software just generates a new Task with tomorrow as the due date. Therefore the "at-a-glance" profile of the list doesn't change and I don't know by looking at the list what remains to be done.

While I can see how to filter the list so that only Tasks with due dates show up, that also conceals all of my other context lists as the items on them do not have due dates.

Is there some way to handle this that I'm missing?

Thanks!
Scot
 

jasonalanmoore

Registered
Scot, what I've done to combat this problem (I have not tried Michael's suggestion of creating the tasks each morning via VB Script) is I have Automatic Formatting set for the TaskPad such that tasks due today are bolded so that I can determine which are still due today and which are due tomorrow. That's good for Outlook but that does not translate to my PocketPC. Therefore on there, I must discern by means of viewing the due date.

Possibly not the best solution, but it is a solution. :)

Side note, I have other color coding in my TaskPad that is helpful as well. Blue test for my @Someday and green for my @Projects. Red for overdue (the Outlook default) and italized if a due date exists. That way, when I am sifting through the numerous tasks, the bold and red tasks stand out telling me that I have something I should/could to do today. My eyes skip over the green and blue easily.
 
H

hnortonil

Guest
What I do to solve the problem is
a) use the regenerate task 1 day after task is completed (so it comes up automatically for tomorrow and

b) set my view to filter to show:
- tasks with no due date
- tasks with a due date on or before today
- tasks that are not complete (complete = no)
- tasks where complete does not exist

I also turn off automatic formatting because it drives me batty...
 

Ambar

Registered
I have @morning and @evening places in Life Balance (also an @TwiceDaily place, for those tasks that should appear in both views).
 

apinaud

Registered
I have those things in my calendar in the morning and in the afternoon, if I can do it, is done, if not, can wait until the next time assigned. Since my palm let me create categories i just create a category and try to follow up, sometimes I skip but in general works like a charm.

I have basicly 1 are per day, monday trough friday, sat and sun is for special projects and in deep cleaning, but in my expirence using this system, I save so much time, me and my wife clean deep in a minute and we love that way.

We have the schedules inverse, then lets say I clean kitchen monday, therefore she do it friday, in this way all the zones get 2 ok to good cleanings in the week, and when need it a really deep one in he weekend, this change our chores from horrible to symple and we love it.
 

furashgf

Registered
I liked Michael's idea so much I kicked it up a notch (or overcomplicated it) by making it configurable. You can have as many checklists as you want - each of the checklists is actually a text file that looks a lot like the configuration file used by the Getting Things Done plug in.

So, you list, for "DailyDisciplinesChecklist"
<Item><Subject>Process In-Boxes and Triggers</Subject><Categories>@Computer</Categories></Item>
<Item><Subject>Review Previous and Upcoming Calendar: Review Previous Calendar Data</Subject><Categories>@Computer</Categories></Item>
<Item><Subject>Empty Your Head (Brain Dump)</Subject><Categories>@Computer</Categories></Item>

You then make a button and you click it, and it reads that list and turns them into tasks, due that day, with the appropriate settings, numbered based on the order you entered them (1., 2.). You can even add detailed notes. It also deletes any uncompleted ones from the previous day.

You can make as many lists as you want (Monthly, Daily).

When I have some time, I plan to make a little screen for it that automates the list making process. It's pretty easy though.

I'd post the code, but I'm not sure where to do that.
 

Elena

Registered
furashgf said:
I liked Michael's idea so much I kicked it up a notch (or overcomplicated it) by making it configurable. You can have as many checklists as you want - each of the checklists is actually a text file that looks a lot like the configuration file used by the Getting Things Done plug in. <snip>

I'd post the code, but I'm not sure where to do that.

Will it post here? Is it huge? Maybe you can start a new thread labeled "Outlook Checklists: Code Only" or something similar.

Elena
 

furashgf

Registered
Ok, here it goes. Note that there is no warranty, express or implied (so save your stuff before you try this

1.This is the code you want to paste, somewhere, into VBA[/i]

Option Explicit

Function GetSettingByName(ByVal settingName As String) As String

Dim myNamespace As NameSpace
Dim currentFolder As MAPIFolder
Dim currentMail As Object
Dim hasSettings As Boolean
Dim parentFolder As MAPIFolder

On Error GoTo GetSettingsByName_Error

hasSettings = False
Set myNamespace = Application.GetNamespace("MAPI")
Set parentFolder = myNamespace.Folders("Mailbox - Furash Gary")
Debug.Print parentFolder.Name
For Each currentFolder In parentFolder.Folders
If currentFolder.Name = "Settings" Then
For Each currentMail In currentFolder.items
If currentMail.Subject = settingName Then
GetSettingByName = currentMail.body
hasSettings = True
End If
Next
If hasSettings Then
Exit For
End If
End If
Next currentFolder

Set currentFolder = Nothing
Set currentMail = Nothing
Set myNamespace = Nothing
If hasSettings = False Then
Err.Raise "9999", "GetSettingsByName", "Could not find settings"
End If

Exit Function

GetSettingsByName_Error:
If Err.Number = 13 Then
Resume Next
End If
End Function

Sub GenerateTaskList(ByVal xmlText As String)

Dim xmlDoc As New MSXML2.DOMDocument50
Dim items As IXMLDOMNodeList
Dim itemNode As IXMLDOMNode
Dim newTask As Outlook.TaskItem
Dim itemPart As IXMLDOMNode
Dim listName As String
Dim prop As UserProperty
Dim i As Integer

On Error GoTo GenerateTaskList_Error

With xmlDoc
.async = False
.loadXML xmlText
With .parseError
If .errorCode <> 0 Then
Err.Raise "1001" + .errorCode, "GenerateTaskList in Module mdlOutlookUtil", .reason + Chr$(10) + Chr$(13) + .srcText
End If
End With
End With

listName = xmlDoc.selectSingleNode("/Checklist/Name").Text

Set items = xmlDoc.selectNodes("/Checklist/Tasks/Item")
i = 0
For Each itemNode In items
i = i + 1
Set newTask = Application.CreateItem(olTaskItem)
With newTask
For Each itemPart In itemNode.childNodes
Select Case itemPart.baseName
Case "Subject"
.Subject = i & ". " & itemPart.Text
Case "Categories"
.categories = itemPart.Text
Case "Body"
.body = itemPart.Text
End Select
Next itemPart
.UserProperties.Add("Checklist", olText) = listName
.UserProperties.Add("Action", olText) = .categories
.DueDate = Date
.Save
End With
Set newTask = Nothing
Next itemNode

MsgBox "Tasks for checklist " & listName & " created", vbOKOnly, "mdlOutlookUtil"

Exit Sub
GenerateTaskList_Error:
MsgBox "Error " & Err.Number & " (" & Err.Description & ") in procedure DailyDisciplines of Module Utilities"

End Sub
Function DeleteChecklistTasks(ByVal listName As String) As Integer

Dim folderSet As NameSpace
Dim taskFolder As MAPIFolder
Dim task As TaskItem
Dim openItems As Object
Dim property As UserProperty

Set folderSet = Application.GetNamespace("MAPI")
Set taskFolder = folderSet.GetDefaultFolder(olFolderTasks)
For Each task In taskFolder.items
If task.Complete = False Then
Set property = task.UserProperties.Find("Checklist")
If TypeName(property) <> "Nothing" Then
If property.Value = listName Then
task.Delete
End If
End If
End If
Next task

Set folderSet = Nothing
Set taskFolder = Nothing

End Function

Sub UpdateTaskPriorities()

Dim folderSet As NameSpace
Dim taskFolder As MAPIFolder
Dim task As TaskItem
Dim openItems As Object
Dim property As UserProperty

Set folderSet = Application.GetNamespace("MAPI")
Set taskFolder = folderSet.GetDefaultFolder(olFolderTasks)
For Each task In taskFolder.items
If task.Complete = False Then
If InStr(1, task.categories, "Someday") Then
task.Importance = olImportanceLow
ElseIf task.DueDate > (DateAdd("d", -7, Date)) Then
task.Importance = olImportanceHigh
Else
task.Importance = olImportanceNormal
End If
End If
Next task

MsgBox "Task priorities updated", vbOKOnly, "mdlOutlookUtil"
Set folderSet = Nothing
Set taskFolder = Nothing

End Sub

Sub GenerateWordTaskLists()

Dim wordApp As Word.Application
Dim taskList() As String
Dim i As Integer

taskList = GetTaskSubjectsByCategory("@Home")
If UBound(taskList) > 0 Then
Set wordApp = CreateObject("Word.Application")
wordApp.Documents.Add
i = 0
wordApp.Selection.Font.Size = 11
While i <= UBound(taskList)
wordApp.Selection.TypeText taskList(i) & Chr(10)
i = i + 1
Wend
wordApp.ActiveDocument.SaveAs fileName:="@Home.doc"
wordApp.Quit
Set wordApp = Nothing
End If

End Sub

2. Make sure you have a folder off your root tree called "Settings". GTD will create one for you if you have the add-in for outlook

3. Then, create a "new post" in that folder. Call the subject whatever you want (e.g., "!DailyDisciplines") and create something like the following in the body of the message to yourself

<?xml version="1.0" encoding="UTF-8"?>
<Checklist>
<Name>!DailyChecklist</Name>
<Tasks>
<Item><Subject>1/2 Hour of "Sun Certified Programmer and Developer for Java 2"</Subject><Categories>@Anywhere</Categories></Item>
<Item><Subject>Brainstorm and Organize 1-2 Projects</Subject><Categories>@Computer</Categories></Item>
<Item><Subject>Jogging or Calesthenics</Subject><Categories>@Home</Categories></Item>
<Item><Subject>Review Track-IT calls assigned to Applications or assigned to Gary Furash</Subject><Categories>@Office</Categories></Item>
<Item><Subject>Review Newly Updated Mantis items, Emergencies, and Incidents</Subject><Categories>@Office</Categories></Item>
<Item><Subject>Action Items: Review the calendar: what must be done today/tomorrow at a specific time or any time</Subject><Categories>@Computer</Categories></Item>
<Item><Subject>Action Items: Review "@WaitingFor" and "@Agenda"</Subject><Categories>@Computer</Categories></Item>
<Item><Subject>Check in with each team member (MBWA)</Subject><Categories>@Office</Categories></Item>
<Item><Subject>Note Daily Accomplishment</Subject><Categories>@Computer</Categories></Item>
</Tasks>
</Checklist>

You put in one "<item>" row for each of your items. Each item has to have a subject and a category, and can have a "Body"

4. You just need to make a snippet of code for each of your checklists, like the following

Sub MakeDailyChecklist()
DeleteChecklistTasks "!DailyChecklist"
GenerateTaskList GetSettingByName("!DailyChecklist")
End Sub

Sub MakeWeeklyChecklist()
DeleteChecklistTasks "!DailyChecklist"
GenerateTaskList GetSettingByName("!WeeklyChecklist")
End Sub

5. You can then run them via alt-f8 or use Hyatt's great explanation for how to set up a button

I plan to clean this up a bit so you can choose, from a drop down, dynamically, which checklists you want to autobuild and maybe a few othre features. Also, I need to clean up the search function - rather than looping through all of the tasks, I need to do a Find/Next.

Note that if you use the add-in, it will put the <category> tag contents into both categories and action.
 
A

Anonymous

Guest
jasonalanmoore said:
Side note, I have other color coding in my TaskPad that is helpful as well. Blue test for my @Someday and green for my @Projects. Red for overdue (the Outlook default) and italized if a due date exists. That way, when I am sifting through the numerous tasks, the bold and red tasks stand out telling me that I have something I should/could to do today. My eyes skip over the green and blue easily.

Great idea. I've got to try this.

Thanks,
Tom
 

furashgf

Registered
I've got a few other things to do. Feel free to send recommendations:
1. change the refresh code - it's too slow
2. create a GUI screen so you can pick which checklist you want to re-create.

Gosh - I forgot - when you put in my VB code, go to Tools --> References and scroll down until you see "Microsoft XML, v5.0" (I would guess v4 or something would work too) and click the checkbox.

If you don't do this, Microsoft doesn't know how to read the checklist.
 

Elena

Registered
furashgf said:
Ok, here it goes. Note that there is no warranty, express or implied (so save your stuff before you try this

Looks really interesting! I plan to dig into it this weekend. Please let us know as you get things the way you want them. Thanks so much for sharing your work with us.

Elena
 
A

Anonymous

Guest
Simliar Function on the Palm

Stargazer Rick had a HotPaw Basic Script that does a similiar function on the palm. I took his original code and modified it to accept a category and a selectable date if anyone is interested in the code you can view at http://rsinnovative.com/articles/convert_palm_memos_2_todos.html

My first attempt is reference at the bottom if you would like a copy of the most recent code email me and I send it to you

jhundleyj@yahoo.com

James
 
A

Anonymous

Guest
Colour Coding

Thats a great idea to colour code your different categories in the task list - but can I ask a dum qn and ask how?
I see the view customisation allows red for the urgent (overdue) tasks but how to colour other tasks? Is this something you do manually when you input them?
Angela UK
 
A

Anonymous

Guest
I think the original poster is using the autoformatting in Outlook to change the color by category.
 

furashgf

Registered
Not to be outdone, my script now generates a little popup that lets you pick from whatever things you've put in your settings folder (choose a checklist), and either remove all entries from that checklist or re-add them.
 
B

btc

Guest
furashgf said:
Ok, here it goes. Note that there is no warranty, express or implied (so save your stuff before you try this...
I don't see the GetTaskSubjectsByCategory routine anywhere.

BTW, if anyone tries this code, it may not be obvious that they need to change all the & back to ampersands, < back to a less than sign, etc.
 
Top