jonathanwiesel
jonathanwiesel

Reputation: 1034

Applescript date property in Reminders.app

I made this code that its supposed to parse a given string separated by "/" with the message, day and time, then make a Reminder in Mountain Lion Reminders.app.

My problems comes when Reminders doesn't seem to like the date I'm passing to it for no good reason.

I get this error message:

Invalid date and time date August 6 2012 6:00pm of list Reminders.

Here's my code:

--explode © 2008 ljr (http://applescript.bratis-lover.net)
on explode(delimiter, input)
local delimiter, input, ASTID
set ASTID to AppleScript's text item delimiters
try
    set AppleScript's text item delimiters to delimiter
    set input to text items of input
    set AppleScript's text item delimiters to ASTID
    return input --> list on error eMsg number eNum
    set AppleScript's text item delimiters to ASTID
    error "Can't explode: " & eMsg number eNum
end try
end explode

--reminders © 2012 Jonathan Wiesel (http://github.com/jonathanwiesel)
set myList to explode("/", "visit my mom/today/6:00pm")
set theReminder to item 1 of myList
set queryDay to item 2 of myList
set theHour to item 3 of myList
set theYear to year of (current date)
if queryDay = "today" then
   set theDay to day of (current date) as string
   set theMonth to month of (current date)
   set theDate to theMonth & " " & theDay & " " & theYear
else if queryDay = "tomorrow" then
   set theDay to (day of ((current date) + (24 * 60 * 60)))
   if (day of (current date)) < (day of ((current date) + (24 * 60 * 60)))
        set theMonth to month of (current date)
    else
        set theMonth to (month of ((current date) + (30 * 24 * 60 * 60)))
    end if     
       if year of (current date) < year of ((current date) + (24 * 60 * 60)) then
    set theYear to (year of (current date)) + 1
    set theDate to theMonth & " " & theDay & " " & theYear & " "
   else
    set theYear to year of (current date)
    set theDate to theMonth & " " & theDay & " " & theYear & " "
   end if
else
   set theDate to queryDay
end if

set stringedDate to theDate as string
set stringedHour to theHour as string
set stringedAll to stringedDate & " " & stringedHour
tell application "Reminders"
tell list "Reminders"
    make new reminder with properties {name:theReminder, due date:date stringedAll}
end tell
end tell

Upvotes: 0

Views: 3061

Answers (1)

regulus6633
regulus6633

Reputation: 19030

Well there is a good reason. You are telling the Reminders application to convert the date in string format to a date object. Reminders does not know how to do that. Applescript does. So just change your last few lines of your script to make applescript do it as follows. Basically you should never tell an application to do something that is not in its applescript dictionary.

set stringedAll to date (stringedDate & " " & stringedHour)
tell application "Reminders"
    tell list "Reminders"
        make new reminder with properties {name:theReminder, due date:stringedAll}
    end tell
end tell

Upvotes: 1

Related Questions