Create a new task in a project

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.

Share on LinkedInShare on TumblrSubmit to StumbleUponSave on DeliciousDigg ThisSubmit to redditShare via email

Leave a Reply

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>