iCal AppleScript,如何指定‘同一天 9 点’?

iCal AppleScript,如何指定‘同一天 9 点’?

我知道我可以通过 AppleScript 以编程方式定义一个新的 iCal 事件,定义如下内容:

 tell application "iCal"
    tell calendar "My Calendar"
        set theCurrentDate to current date
        set newEvent to make new event at end with properties {description:"Test Event Description", summary:"Test Event", location:"Foo Location", start date:date "21/5/2012", end date:date "23/5/2012", allday event:true}
        tell newEvent
            make new sound alarm at end with properties {trigger date: date "21/5/2012 09:00", sound name:"Glass"}
        end tell
    end tell
 end tell

但是,我不太喜欢在“触发日期”中输入精确的日期,我更希望能够指定“同一天 9:00”或“2 小时前”。这可以通过 GUI 实现,但我找不到相应的 AppleScript 语法。有关于这类事情的参考资料吗?

先感谢您。

答案1

如果您指的是单击按钮时 Lion 的 iCal 弹出的自然语言输入框+,那么该功能似乎没有向 AppleScript 公开。

这个参考,实际上是任何应用程序脚本模型的第一个参考,是它自己的脚本词典– 您可以在 AppleScript 编辑器的“库”窗口中浏览已记录的脚本界面。默认情况下,iCal 位于其中,OS X 预装的大多数可编写脚本的应用程序的字典也是如此,但您可以通过将其拖放到窗口上(或通过按钮走很长的路+)来添加任何可编写脚本的应用程序 – 顺便说一句,这是一种找出应用程序是否可以编写脚本的好方法,因为不可编写脚本的应用程序会拒绝将自己添加到库中。

答案2

我知道,这是一个老问题,但是......

‘同一天 9:00’:

-- 1.  Get the start date of the event
set evtStartDate to start date of newEvent
-- 2. Reset the time of that date (=> 00:00)
-- Not necessary in your example as you don't specify time so time is already 00:00
tell evtStartDate to set myTriggerDate to it - (its time)
-- 3. Add 9 hours to that date
set myTriggerDate to myTriggerDate + 9 * hours
-- 4. Set this date as the trigger date
tell newEvent
    make new sound alarm at end with properties {trigger date: myTriggerDate, sound name:"Glass"}
end tell

‘2 小时前’:

注意:在您的示例中,2 小时前表示 2012 年 5 月 21 日 00:00:00 之前 2 小时,因此为 2012 年 5 月 20 日 22:00:00。如果您想要其他时间,则需要在开始日期中指定时间。

-- 1. Get the start date of the event
set evtStartDate to start date of newEvent
-- 2. Subtract 2 hours to that date
set myTriggerDate to evtStartDate - 2 * hours
-- 3. Set this date as the trigger date
tell newEvent
    make new sound alarm at end with properties {trigger date: myTriggerDate, sound name:"Glass"}
end tell

相关内容