Un-Kinking Entourage Part 3: Automation

Learn how to transform Microsoft Entourage into the ultimate GTD productivity system. If you haven’t already, read the previous articles in the series to get started before diving into these details.

Today’s installment will get into the real fun part of un-kinking Entourage: The magical AppleScripts which make Entourage a totally smooth and easy environment for keeping your mind like water.

In our previous installment, you got a taste of this fun with the “Quick Project” script which turns a multi-step wizard into a simple menu item. But the scripts I’ll be sharing today will keep your tasks organized, archive old ones, and let you add new tasks, projects and even categories to Entourage from within any application without typing more than a single line of text!

A Quick Refresh

From the previous articles, we’ve covered how to map GTD-type principles to Microsoft Entourage, and also covered the nitty gritty details of setting up views, categories, projects and tasks to make Entourage a happy home for all your open loops and actions.

Along the way, we’ve covered how tasks are broken into Next Actions or Deferred Actions, depending on their priority. We’ve also applied certain naming conventions to our categories and projects. In the case of categories, each category that we intend to use as a GTD-type “Context” has a prefix of “@”, “+” or “=” (thus keeping it separate from all other contexts); while projects might have a suffix of “*” or “=”.

These naming conventions are key for the automation that these scripts provide, so let’s go into more detail on how this all works.

Three Kinds of Contexts

There are three distinct sorts of context under this model.

@ Contexts: Nothing Special

The first is the basic “@” context. This context is really no different from a category, except that the @ prefix denotes that it is, in fact, a context, and should be scanned by the scripts when necessary.

= Contexts: Don’t Call Me, I’ll Call You

The second kind of context is the deferred context, which is prefixed with a “=”. Any and all tasks assigned to one of these contexts will be set to the lowest priority, and are thus marked deferred. This is a good place to store tasks which are on-hold (perhaps using a context as an ad-hoc someday/maybe list), or which you cannot immediately act on, but which are still important. (e.g. A Waiting For context.)

+ Contexts: Cross-Project Efficiency

Lastly, there is the List Context, prefixed with a “+” sign. This is unique to this model, but is a powerful tool for ensuring that you make the most of your time.

A list context should contain tasks which require an associated list of sub-tasks or reminders. Obvious examples would include agendas with particular people or errands where each task would be a destination location or store.

Why do you want this? Well, let’s say that you’ve set up a “+ Agendas” context. In that context, you’ve put a task called “Boss” with a note of “Give him an update on the Widget Manufacturing project.” You then realize that you also need to update him on the Johnson Account, so rather than create a new task in the + Agenda context, you can instead just add the note “Update on the Johnson Account” to the “Boss” agenda task.

With errands, it can work the same way. An entry of “Grocery Store” could contain both “Milk” and “Eggs” in the note as a shopping list, but when you remember you also need beer, you can add “Beer” to the note.

This becomes especially important when using the Send to Entourage script, as it will automatically detect matching tasks in + Contexts and append to them, leaving you free to concentrate on just making a list.

Then, when you’re in a meeting with a certain person or at a store, you can take care of EVERYTHING you need to handle in that context, and you don’t have to build new agenda contexts for everyone in your life, nor errand contexts for every store in your town.

Automation: Auto-process Tasks and Projects

And now, at long last, the scripts which put this all into practice. The first set of scripts handles the automatic assignment of priorities to tasks, so as to determine Next Actions and Deferred Actions automatically, as well as to archive completed tasks so that they’re out of the way, but still accessible.

As with all the scripts associated with the Un-Kinked Entourage model, they are optional, and may be used or not as you wish.

Installation of These Scripts

The following two scripts can be run from any location, or even directly from Script Editor. I find the best place for them is in the Entourage Script Menu Items folder in ~/Documents/Microsoft User Data/.

Auto-Process GTD Tasks

This script simply assigns priorities to tasks based on a fairly simple set of rules.

If a task is in a project whose name ends with an asterisk (*), it will set it as a next action (high priority). Similarly, if the project ends with an equals sign (=), it will set the task to lowest priority, thus marking it as a deferred task. The same is true if the task is in a context that begins with “=”.

For all other projects and contexts, the same rules apply: If the task belongs to a project which has no incomplete next actions (priority of High or Highest), it will automatically set the first task in the project’s list as a Next Action.

There is, of course, nothing preventing you from setting multiple next actions in a project, and that may be appropriate in some cases, but if you do, this script will pass over that project so long as there is at least one incomplete Next Action.

Note that this script may behave unpredictably if a task belongs to multiple projects or contexts, as it may have its state changed multiple times. In that case, the last change wins.

This script can either be run manually or via a schedule. Personally, I have set up a schedule which runs it every time Entourage is started up, and I’ve also added it to the Entourage Script Menu items so that I can run it whenever I wish.

Archive Project Tasks

This script will delete completed tasks that belong to your projects, and will add them to a note entitled “Archived Tasks”, where each is listed under the date and time that they were archived. The full note and last modification date (presumably the completion date) for each task is also saved, although context and links are not.

If a completed task belongs to multiple projects (not uncommon with tasks in “+ Contexts”), it will be added to the Archived Tasks list for both projects.

This archived task list is meant to help keep a journal of your progress and to help with any sort of progress reviews that might be required of you.

This script will also create the “Ω Utility” category if there is not already such a category in place. At present, this is the only script which uses this category, but in the future, other scripts will put automatically generated lists into this category to make them easier to filter. If you don’t like the name “Ω Utility”, you may change it to whatever you like, provided that the first character is an omega (“Ω”, generated by typing option+Z).

Create GTD Entries from Anywhere: Send to Entourage

Update: Nov 7, 2006 - Updated script to fix a problem matching, well, everything.

Send to Entourage is the equivalent of Kinkless GTD’s “Send to KGTD” script. It uses a simple syntax to allow you to add new tasks, projects, and contexts, and even to assign notes and due dates to created tasks.

The script is designed to be run from any application that can launch an AppleScript, including Entourage’s script menu, the Apple-provided AppleScript menu, or various other programs. However, if you use either LaunchBar or Quicksilver, you can use these programs’ ability to send text to a script to enter new information with little more than a keystroke.

Installation will vary depending on which program you’re using. If you are using LaunchBar, I recommend simply adding the “Entourage Script Menu Items” folder to the scanned folders in LaunchBar’s configuration. Then you can have just one copy of the script on your drive, but can use it both for LaunchBar and for activation within Entourage itself.

If you’re using Quicksilver, you’ll want to put a copy of the script into ~/Library/Application Support/Quicksilver/Actions/ in order to be able to use it with the Process Text command. You may also need to force Quicksilver to refresh its database and/or quit and restart the program.

For Entourage, I recommend just putting it in the Entourage Script Menu Items folder. You can also apply a keyboard shortcut to it in the usual fashion. (Refer to Entourage’s help for details.)

You will also have to install Growl, which is what the script uses to give feedback so that it stays out of the way. Growl is a free download.

How it works

You activate the script. If you simply run the script from the script menu, it will prompt you with a text field. If you use Quicksilver or LaunchBar, you can send the string straight to it, or activate it normally and use the provided text field.

The text you send must be specially formatted, as follows:

Nothing = Task If the first character is not an @, : or >, the first thing you enter will be considered a task

@ = Context: @ Indicates a context. This will attempt a match (full or partial) against existings contexts. It is not necessary to add a @, = or + in front of the context in this syntax. So “Home” is the same as “@ Home” or “= Home”.

> = Project: > Indicates a project. This will attempt a match (full or partial) against existings projects and add a new one if none exists.

| = Note: | indicates task details. The text following a bar will be added to the new task in your KGTD document as a note. If there is no task, the note information is lost. You cannot add notes to a new context or project.

#due date: # indicates that dates should be attached to a new task. The due date can be in any format that AppleScript can parse, so 1/1/06 or Jan 1, 2006 should both work.

@@, >>: Putting two delimiters in a row will bypass the usual matching and will, instead, force the creation of a new context or project, respectively. Two delimiters for date or details are permitted, but have no effect.

The typical usage would be to create a task and assign it to a project and context in one step. The syntax to do this is as follows:

Vacuum Floor | It's real dirty @ Home > Housecleaning # 1/31/06 - friday

In this case, “Vacuum Floor” is the task; “It’s real dirty” is the details, which will be assigned as a note to the “Vacuum Floor” task; “Home” is the context; and “Housecleaning” is the project. A start date of January 31, 2006 will be assigned to this task, and a due date of next Friday will also be set.

The script will also attempt to match your entered context or project against existing contexts or projects. It will first attempt an exact match, and if that doesn’t work, it will attempt to match what you entered for the project or context against projects/contexts which begin with the same text (prefix), then which end with the same text (suffix), and finally which contain the same text (substring). If no match can be made, a new project and/or context will be created.

This can be used to your advantage by setting up contexts and projects with unique prefixes, suffixes, or even special symbols (other than @, > and |) so that new tasks can be easily assigned to them.

As noted above, by entering two delimiters in a row (@@ for context or >> for projects) will bypass this matching and will force KGTD to generate a new context or project, as appropriate.

The order of the various operators is irrelevant, except for the task, which must ALWAYS be the first text entered. So Task @ Context : Details > Project is functionally identical to Task > Project @ Context : Details.

You also do not need to enter all of the information. If you simply want to quickly drop a new task in your inbox you can just send “New task | I don’t know where to file this” and it will work. Similarly, if you only wish to create a new project, you can type “>New Project”.

Whitespace before or after each operator is trimmed off automatically, so you can either type “Task @ Context” or “Task@Context”. It makes no difference.

Next: Un-Kinking Entourage Part 4: Best Practices

AttachmentSize
Archive Project Tasks5.73 KB
Send to Entourage (updated Nov. 7, 2007)35.6 KB
Auto-Process GTD Tasks (updated Mar. 12, 2008)4.97 KB

Loving This!

Hi Nik - I’m giving this a try, but it looks fantastic so far. I’ve been using the Quick Project script, and that’s been a neat time-saver.

I’m making the switch from kGTD (I guess the Growl site was down for a while yesterday)…and look forward to getting some more projects and tasks added so I can see how your scripts work.

Send to Entourage Script not matching existing Context

Wow!! All this is great!

However I have a problem with the Send to Entourage Script either by running it from the Script Menu in Entourage or Quicksilver. When I create a task, the script can’t do the match with existing contexts so it only creates the task with no context assigned to it. However if I “force” the script by including the @@ parameter, it works perfectly.

Any ideas?

Update, the same behavior with Projects

Nik, Just an update. The same problem happen with Projects. Only by using >> I get the project name added to the task Thanks!

Updated Send to Entourage Script

Sorry, I overlooked one place when re-factoring. Apologies for the problems. Re-dowload the script to get the fixed version and just overwrite the old script.

Thanks!

Nik,

These scripts are awesome! Thanks a million.

Great scripts, thanks for

Great scripts, thanks for providing them. Any chance of adding the ability to create calendar events via a similar syntax?

Projects for Agendas and Errands?

Hi, Nik.

This is all fabulous.

Question: should + Agenda tasks and + Errand tasks have a project? Would it be the “one-off” project? Otherwise, they never leave the - Inbox.

However, when I put them in the Misc* project, they no longer show up in the +Agenda and +Errands contexts… they show up only in !Next Actions (this is after running Auto-process script).

Help… I feel stupid.

Ann

Re: Projects for Agendas and Errands?

Yes, everything gets a project, even agendas and errands. It’s not unusual for me to associate an +Agenda or +Errands type action with more than one project (so I can correlate info with multiple open loops).

I’m not sure why these actions would fall out of your context views. Double check the set-up of your views and make sure that the tasks belong to the right contexts and projects. (I assume they do if they’re showing up in !Next Actions.)

In any case, the auto-process script shouldn’t CHANGE what categories/contexts a given task is associated with. Can you also double check that they show up as usual before you auto-process and move afterward?

If you need more help, please email using the contact form, since it’s hard to keep a dialog going over comments.

Projects for Agendas and Errands: User Error :-)

It was me… For +Agendas, +Errands, =Someday/Maybe, and =Waiting For contexts, I had set the criteria of Project IS None instead of Project IS NOT None. Hey, it was late in the afternoon… Now all the tasks for + and = contexts show up in two places (as they should): Next Actions view and context-specific views.

So, today I am going to attempt to learn Quicksilver and the various ways to send tasks to Entourage and notes to Entourage tasks. Thanks, Nik, for your help.

Ann

+Errands Context

Thanks for this series, Nik - it’s excellent.

I’m having a problem adding tasks to the ‘+ Errands’ context with the Send To Entourage script. Every other context works fine. Is there something I’m missing, or haven’t done?

The error I get is: “Send To Entourage Error - 1728 Microsoft Entourage got an error: Can’t get name of every task whose category of it = {category id 62 of application “Microsoft Entourage”} etc. etc. etc.”

I’m using Entourage 2008.

Would appreciate your help.

Many thanks, Dan

Re: +Errands Context

Yep, same here, Dan. I’ll take a look at it when I have the chance.

You may want to try making a single task in that context and see if the error still comes up. Far from ideal, but it may get around the error. Let me know if it does.

+Errands Context

Thanks for your reply, Nik.

I’ve tried it with a single task in the ‘+Errands’ context, and multiple tasks, and I get the same error.

There’s also some strange happenings with appending to notes existing tasks, and adding tasks to existing projects - sometimes they’ll append, and other times a new task or project will be created.

Minor issues though - I’m spending a lot of time in Entourage at the moment, so have been appending notes manually and using Send To Entourage for adding new tasks.

Regards, Dan

Problems with Send to Entourage and Office 2008

Nik, i’m loving and extensivly using the un-kinking entourage concept and scripts. With installing MS’s Office 2008 the send to Entourage script isn’t working porperly anymore. The Problem I have is that it’s no more possible to asign a exeisting project to a task while adding it.

e.g.: “testtask @any | blbablablabla >proj” will create a “testtask” with context “@anywhere” and some notes but not assignes to the project “project” instead another project names “proj” will be created.

Also it seams that assigned expiration dates to tasks doesn’t work any more.

Kind Regards Matthias

Same problem with project name matching not happening

Hi - I confirm I have the same problem as Matthais with the project name not matching the closest existing project and insisting on creating a new project……Are you still using these scripts yourself?

Project Matching and Other Bugs

I’m sorry for the frustration this is causing you. I am aware that there are some bugs right now. I intend to fix these problems when I have some available time, but that could be a while.

My theory is that these bugs were introduced by one of the updates to Entourage, and are definitely present in the latest, 2008, release. There’s also some optimization opportunities that would make things generally more robust. (These scripts were my first efforts at substantially scripting Entourage, and I’m better at it now than I used to be.)

I beg your patience on this, and I promise that the next version I build will be a lot better than what you have today.

And, of course, these scripts are open source, so you’re welcome to edit them and fix these bugs if you are able to.

Downgrading High Priority Projects

I have several projects that I have appended an asterisk to increase their priority. The script worked great as it upgraded all tasks within those projects to a Importance of High. However, a couple of the projects that I added the asterisk to have now become lower priorities so I have removed the asterisk from the project name. Unfortunately, the tasks that are in those projects are still converted to High priorities every time the script runs (even if I manually change their Importance back normal). Any suggestions?

Problem with Send to Entourage script not maching existing proje

As earlier reported, the match to an existing project function isn’t working with Entourage 2008. I have been examining the script and can see these two lines

  set projectNames to name of projects --whose completed is false
        return item (my bestMatchIndex(projectString, projectNames)) of projects -- whose completed is false)

I have added the comments — so that the whose completed is no longer tested and this seems to fix things. Turns out Entourage projects can’t be ‘completed’ and even though the completed property exists in the Applescript dictionary for an Entourage project asking for ‘whose completed’ will case an Applescript 1731 error.

Post new comment

The content of this field is kept private and will not be shown publicly.

More information about formatting options

CAPTCHA
This question is for testing whether you are a human visitor and to prevent automated spam submissions.