3

Я знаю, что могу определять новое событие iCal программно, с помощью AppleScript, определяя что-то вроде:

 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 часа назад». Это возможно через графический интерфейс, но я не могу найти соответствующий синтаксис AppleScript. Есть ли ссылка для такого рода вещей?

Заранее спасибо.

2 ответа2

2

Если вы имеете в виду поле ввода на естественном языке, то при нажатии кнопки + Lion iCal всплывает, эта функциональность, по-видимому, не доступна AppleScript.

Ссылка для этого, фактически первая ссылка для модели сценариев любого приложения, представляет собой собственный словарь сценариев - документированный интерфейс сценариев, который вы можете просматривать в окне «Библиотека» редактора AppleScript. iCal там по умолчанию, как и словарь большинства скриптовых приложений, которые уже предустановлены с OS X, но вы можете добавить любое скриптовое приложение, просто перетащив его в окно (или пройдя длинный путь через кнопку + ) - Кстати, это хороший способ узнать, является ли приложение доступным для сценариев, так как не предназначенные для сценариев приложения просто откажутся добавлять себя в библиотеку.

0

Я знаю, это старый вопрос, но ...

«тот же день в 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 часа до означает 2 часа до 21/5/2012 00:00:00, поэтому 20/05/2012 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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .