Calendar application for GTD on Symbian S60/Nokia E71

tomsterman

Registered
When I bought my new Nokia E71 last week I was very disappointed with the calendar and task functionality. Since then I have tried and fallen in love with an excellent piece of software from SBSH Software.

http://www.sbsh.net/products/symbian_s60/calendar

It costs $19,95 and replaces the built-in calendar and tasks applications. Since it uses the same database as the built-in calendar and tasks applications it does not affect the sync process, whether with a PC or wirelessly with an exchange server (I use the latter).

Compared the built in applications it provides a much better overview of both the calendars and the tasks. It is very customizable, for example you can adjust font size to include more on the screen and according to the sharpness of your eyesight :). It can also group tasks according to category (action), assign custom category colors in the calendar for day-specific tasks.

It does not handle projects though, but when I am on the go I really don't need that, I just want to keep track of my tasks and where I am supposed to do them (i.e. the outlook category/GTD action).

The only major functions that I miss to fully "mobilize" my GTD system on the E71 are category synchronization and to be able to have undated task (as I understand it this comes from a quirk in the built-in nokia database that assigns all undated tasks to today’s date) with category synchronization the most important by far. The GTD reviews I would not want to do on my smartphone anyway, so I don't think there is a need for all the functionality provided in the GTD outlook plugin.

Unfortunately there is no application available that synchronizes categories to the symbian platform (at least none I have found, so please let me know if you find one). But SBSH has provided a workaround. In their application you can assign a code to each category, and by starting your task subjects with that code it automatically assigns the task/appointment to the category representing that code.

Here is how to do it. Say you have an outlook task with "Call roy about the support question" in the task subject field, categorized as "@Calls". Manually add "[c]" before the task name so that it becomes "[c] Call Roy about the support question". Then create an "@Calls" category in the SBSH calendar, and assign it the code "c" (by marking the category and selecting "goosync" -> "set"). Do the same for the rest of your outlook task/SBSH categories and they will be synced. The only thing you will have to remember is to always start off your task/appointment descriptions with the brackets and the appropriate code (e.g. "[c]") and they will be categorized correctly on your phone. To save time you can of course limit yourself to the actions you really use when you are on the go, like in my case @Calls and @Errand.

I have emailed with SBSH about a solution to the manual step and they seem responsive so I hope that they soon will solve that also.

Hope this helps make you even more efficient.

Regards,
Tommy Arvinell

p.s. I do not work for the vendor of this product; I am just very impressed by it.
 

tomsterman

Registered
Macro to automate categories

Hi again,

I have made a macro to automate the abovementioned manual step in outlook. For each task, it takes the first two characters of the outlook category and automatically enters it at the beginning of the task subject. A task with action "@Calls" will thus start with "[@C]". Then jus enter the corresponding codes in the above calendar applications and the categories will work.

Sub CleanTasksForPapyrus()

Dim objNS As Outlook.NameSpace
Dim OldTaskItem As Object
Dim TaskItem As Object
Dim TskCat As String * 3
Dim OldSubject As String * 3

Set objNS = Application.GetNamespace("MAPI")
Set objTasksFolder = objNS.GetDefaultFolder(olFolderTasks)

For Each TaskItem In objTasksFolder.Items
TskCat = "[" & TaskItem.Categories
OldSubject = TaskItem.Subject
If Not OldSubject = TskCat Then
TaskItem.Subject = TskCat & "] " & TaskItem.Subject
TaskItem.save
End If
Next TaskItem

Regards,
Tommy Arvinell
 

brevoort

Registered
Oh, I really hope this works Tommy.

I've been looking for something, anything, to sync categories between gcal, outlook, and my Nokia e61i for months. The lack of category support in the Symbian operating system is the single biggest failing as far as I am concerned.

It is all the more puzzling that it hasn't been introduced when you consider that the EPOC operating system on the old Psion machines, which evolved into Symbian, did a beautiful job of category sync'ng.

So thanks for this. I'm going to upgrade my Goosync account to try this out. I already had a registered copy of Papyrus (calendar) but that version didn't include this neat work around and I had not realized that the program had been updated.

But one thing . . . would it be possible for you to outline what I must do with the macro code you wrote in order to have it in Outlook? I've used Outlook for years but never had to touch anything to do with macros and I am at a loss.

And I am just wondering, do you have any technique for dealing with undated tasks always being dumped into today's date in Papyrus?

Thanks for posting this --- if it all works it will be a huge step forward because I just about live out of my phone.

Rick Grant
International Strategic Communications and Media Relations
Calgary Canada
www.rickgrant.com
 

tomsterman

Registered
Step-by-step instructions for the outlook macro

Sure, here's how to do it:

A) Create the macro

1) Go to outlook and open the visual basic editor. (tools --> Macro --> Visual basic editor)
2) Select "ThisOutlookSession" in the left hand navigation pane
3) Copy the macro below and paste it into the large window on the right. I have updated the macro below to accommodate for when you change categories from one to another (the old version just added the new category in front of the old one, the new version first deletes the old version).
4) Save the "VBA project" you just created (top left in the Visual basic editor) and close the Visual basic editor.

B) Assign the macro to a button in outlook

5) In outlook, right-click an empty space between your toolbars, select "Customize in the menu". In the Customize dialog box, click the Commands tab. In the left hand side of the window, select "macros". Now your newly created macro should show in the right hand side window.
6) Drag and drop your macro to any free space on the outlook toolbar space (where you just right-clicked). That creates a button you use to start the macro.

C) Select symbol for your new button

7) With the Customize dialog box open, right-click the toolbar button, check "Default Style" (button image only, no text). If you want to pich another button image do so under "change button image".

Cheers,
Tommy

---UPDATED MACRO CODE --------------------
Sub CleanTasksForPapyrus()

Dim objNS As Outlook.NameSpace
Dim OldTaskItem As Object
Dim TaskItem As Object

Dim TskCat As String * 3
Dim OldSubject As String * 3

Dim OldSubjectShort As String * 1

Set objNS = Application.GetNamespace("MAPI")
Set objTasksFolder = objNS.GetDefaultFolder(olFolderTasks)

'Loop through all tasks
For Each TaskItem In objTasksFolder.Items
TskCat = "[" & TaskItem.Categories
OldSubject = TaskItem.Subject
'Check if category code is ok
If Not OldSubject = TskCat Then
OldSubjectShort = TaskItem.Subject
'Remove old category code
If OldSubjectShort = "[" Then
TaskItem.Subject = Right(TaskItem.Subject, Len(TaskItem.Subject) - 5)
End If
'Add new category code
TaskItem.Subject = TskCat & "] " & TaskItem.Subject
TaskItem.save
End If

Next TaskItem

End Sub
 

tomsterman

Registered
Category sync from smartphone to outlook

I am trying to expand the macro to accommodate automatic category update in outlook when you add new tasks on the smartphone/SBSH calendar.

The issue concerns the object model for GTD outlook plugin. I have not found a way to call the GTD action objects in outlook plugin. Does anyone have an idea about how to do that?

Tommy
 

gkerr

Registered
I can't get the macro to work

As far as I can see I followed your directions exactly (Outlook 2007, current version of SBSH calendar, premium version of Goosync) but I get the following error message when trying to run the macro:

Compile error: Expected: line number or label or statement or end of statement

I checked to ensure that my copy and paste was precisely the same and it seems identical. Any idea what I'm doing wrong?

Thanks very much for posting this macro on the site; I guess the usual penalty for generosity is technical support!
 

tomsterman

Registered
Can anyone help us Outlook 2007-proof the macro?

Hi,
I have Outlook 2003 so the problem may be that you have Outlook 2007. If any tech-savvy person who reads this has Outlook 2007, can you please help us out to Outlook 2007-proof the macro?
Regards,
Tommy
 

tomsterman

Registered
Updated version of the macro

Hi again,

I have expanded the macro so that it is also possible to create new tasks in papyrys, assign them to a category and have that category transferred to outlook. After sync; run the macro in outlook followed by the "update task actions" command (CTRL+ALT+U).

It is not possible to change categories in papyrys for tasks that are alredy created and categorized. To solve this you need to check and compare the time stamps on individual tasks versions in papyrys / outloook to see which was changed last, and that is beyond my macro ability. :)

Tommy
---------------------------------
Sub CleanTasksForPapyrus()

Dim objNS As Outlook.NameSpace
Dim OldTaskItem As Object
Dim TaskItem As Object

Dim TskCat As String * 3
Dim OldSubject As String * 3

Dim OldSubjectShort As String * 1

Dim MasterActionList As Object
Dim StartChar As Integer, EndChar As Integer
Dim AllActions As String
Dim TaskItemForAllActions As Object

Set objNS = Application.GetNamespace("MAPI")
Set objTasksFolder = objNS.GetDefaultFolder(olFolderTasks)

'Loop through all tasks
For Each TaskItem In objTasksFolder.Items
TskCat = "[" & TaskItem.Categories
OldSubject = TaskItem.Subject

'Check if category code is ok
If Not OldSubject = TskCat Then

'Check if category is not assigned but category code exist and if so, add corresponding category
If TaskItem.Categories = "" And Left(TaskItem.Subject, 1) = "[" Then

For Each TaskItemForAllActions In objTasksFolder.Items
AllActions = AllActions & "," & TaskItemForAllActions.Categories
Next TaskItemForAllActions
StartChar = InStr(AllActions, Mid(OldSubject, 2, 2))
EndChar = InStr(StartChar, AllActions, ",")
TaskItem.Categories = Mid(AllActions, StartChar, EndChar - StartChar)

Else

OldSubjectShort = TaskItem.Subject

'Remove old category code
If OldSubjectShort = "[" Then
TaskItem.Subject = Right(TaskItem.Subject, Len(TaskItem.Subject) - 5)
End If

'Add new category code
TaskItem.Subject = TskCat & "] " & TaskItem.Subject
End If
TaskItem.save

End If

Next TaskItem

End Sub
 
Top