Reminders.app中的Applescript日期属性

时间:2012-08-07 04:05:18

标签: applescript osx-mountain-lion reminders

我创建了这个代码,它应该用消息,日期和时间解析用“/”分隔的给定字符串,然后在Mountain Lion Reminders.app中进行提醒。

当提醒似乎不喜欢我没有充分理由传递给它的日期时,我的问题就来了。

我收到此错误消息:

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

这是我的代码:

--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

1 个答案:

答案 0 :(得分:1)

那么有充分的理由。您告诉Reminders应用程序将字符串格式的日期转换为日期对象。提醒不知道该怎么做。 Applescript确实如此。因此,只需更改脚本的最后几行,使AppleScript按如下方式执行操作。基本上你不应该告诉应用程序做一些不在其applescript词典中的东西。

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