TannieSpace

geekery, drawing and then some

Create a new task in a project

For completion sake, I decided to post the bit to create a new task in a new or existing project in OmniFocus through AppleScript. I have this in my script that creates tasks from my mail.

If you know a bit of AppleScript, this should help out. If I have the energy, I might post the entire script later and explain the parts.

In this case, it took longest to figure out the following part:

tell MyProject
 set theTask to make new task with properties¬
       {name:MyTaskTopic, context:MyContext, note:ThisNote}
end tell

Apparently, when creating a new task you have to tell the project. If you want to set the context, you instead tell the task to set its context property to something.

This does make sense, in the way that you always tell the containing item to do something.

The part I use in my script:

if MyContext is equal to "NONE" and MyProject is equal to "NONE" then
        set theTask to make new inbox task ¬
        with properties {name:MyTaskTopic, note:ThisNote}
        set ProjectString to "INBOX"
        else
        if MyContext is equal to "NONE" and ¬
                 MyProject is not equal to "NONE" then
                 tell MyProject
                        set theTask to make new task ¬
                         with properties {name:MyTaskTopic, note:ThisNote}
                 end tell

        else
                if MyProject is equal to "NONE" and ¬
                         MyContext is not equal to "NONE" then
                         set theTask to make new inbox task ¬
                          with properties {name:MyTaskTopic, context:MyContext, note:ThisNote}
                         set ProjectString to "INBOX"
                else
                        tell MyProject
                                set theTask to make new task ¬
                                        with properties {name:MyTaskTopic, context:MyContext, note:ThisNote}
                        end tell
                end if
                try
                        set Datum to setDueDate
                        set due date of theTask to setDueDate
                on error
                        set due date of theTask to ((current date) + 604800)
                end try

                tell theTask
                        set note to return & return
                        tell note
                                set theURL to "message://< " & message\_id & ">"
                                set linkText to theURL insert linkText at before first character
                                set value of attribute "link" of style of paragraph 1 to theURL insert message_content at before last character
                        end tell
                end tell

which works like a charm.


Comments powered by Disqus