Forum

  • If you are new to these Forums, please take a moment to register using the fields above.
Announcement Announcement Module
Collapse
No announcement yet.
GTD “!Daily Disciplines” Category Page Title Module
Move Remove Collapse
X
Conversation Detail Module
Collapse
  • Filter
  • Time
  • Show
Clear All
new posts

  • GTD “!Daily Disciplines” Category

    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.

  • #2
    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

    Comment


    • #3
      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.

      Comment


      • #4
        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...

        Comment


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

          Comment


          • #6
            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.

            Comment


            • #7
              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.

              Comment


              • #8
                Originally posted by furashgf
                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

                Comment


                • #9
                  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.

                  Comment


                  • #10
                    Originally posted by jasonalanmoore
                    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

                    Comment


                    • #11
                      Actually, I do that too. In concert with the checklist, due dates, etc. it works really well.

                      Comment


                      • #12
                        furashgf:

                        Kicked it up a notch? I’d say about 10! Great work. I can't wait to give this a try.

                        Michael

                        Comment


                        • #13
                          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.

                          [b]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.

                          Comment


                          • #14
                            Originally posted by furashgf
                            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

                            Comment


                            • #15
                              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/con...s_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

                              Comment

                              Working...
                              X