Jump to content

automatically change to the priority of to do list based on due date applescript


Recommended Posts

Posted

I am trying to create an applescript that will automatically change to the priority of the todo list item based on the due date.

 

I have found an application called Things that is scriptable.

 

I also have the script addition Satimage.osax which has some useful commands.

 

I have started the applescript using Things at the moment I have it sorting the to do by priority.

I would like it to sorted them by date and if there are two with the same date then to look in the notes of the to do where I put the time and sort them by time.

 

The code below is what I have so far which sorts them by priority.

Main

tell application "Things"
   try
       close window "Things"
   end try
   set thelist to {}
   set theToDos to to do of list "today"
   set theCount to count theToDos
   repeat with i from 1 to theCount
       set ToDo to to do i of list "today"
       
       set thename to name of ToDo
       set theduedate to due date of ToDo
       set theduedate to date string of theduedate
       set thenote to notes of ToDo
       set thepriority to tag names of ToDo
       
       set theToDo to "• " & thename & return & "due: " & theduedate & return & thenote & return & "priority: " & thepriority & return
       
       set end of thelist to theToDo
       
   end repeat
   set listCount to count thelist
   set new_list to {}
   repeat with f from 1 to listCount
       set itemlist to get item f of thelist
       set lastword to last word of itemlist
       
       if lastword is equal to "High" then
           set beginning of new_list to itemlist
           
       else if lastword is equal to "Medium" then
           set end of new_list to itemlist
           
       else if lastword is equal to "Low" then
           set end of new_list to itemlist
           
           
       end if
       
       
       
   end repeat
   
   
   
   
   
   
   
   tell application "Finder"
       activate
       display dialog new_list as string buttons {"OK"} default button 1
   end tell
end tell

  

 

the code below can be used to extract to time from the notes as I put other information in the notes as well as the time in this format 14:00.

set theOffset to offset of ":" in thenote
set num to theOffset - 2
set thetime to text (theOffset + 2) thru num of thenote
set thehours to characters 1 thru 2 of thetime as string
set themins to characters 4 thru 5 of thetime as string

 

here is the command to set the priority in things below

set tag names of ToDo to "High" --"Medium" or "Low" 

the ToDo is a variable I set in the main code above.

 

thanks for any help

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now



×
×
  • Create New...