Scripting the Event Store
Example 3.1. Counting Events
Get the number of events.
tell application "Power Manager"
tell Event Store
set numEvents to count events
end tell
end tell
Example 3.2. Counting Pending Triggers
Get the number of pending triggers.
tell application "Power Manager"
tell Scheduler
set numTriggers to count queued triggers
end tell
end tell
Example 3.3. Looking for Existing Events
Say “Morning exists.” if an event named “Morning” exists.
tell application "Power Manager"
tell Event Store
if exists (events whose name is "Morning") then
say "Morning exists."
end if
end tell
end tell
Example 3.4. Make An Event
Creates a new sleep event triggered once, in ten minutes.
tell application "Power Manager"
-- Create the event in the workshop
tell workshop
-- Create a new event
set myEvent to make new event with properties {name:"Sleep in ten minutes"}
-- Create a new trigger
make new trigger once with properties {date:((current date) + 900)} at front of triggers of myEvent
-- Create a new action
make new action sleep at front of actions of myEvent
end tell
-- Deploy the event
tell Event Store to store these events myEvent
-- Clean up the workshop
empty workshop
end tell
Example 3.5. Copy an Event
Find an event by name, copy it to the workshop, and deploy with a new identifier.
tell application "Power Manager"
-- Copy the matching event to the workshop
duplicate the (first event whose name is "Morning") of the Event Store to the end of the events of the workshop
set myEvent to the last event in the workshop
-- Remove the id to avoid overwriting original
delete id of myEvent
-- Without the id, we need to get a new reference to the event
set myEvent to the last event in the workshop
-- Deploy the new event
tell Event Store to store these events myEvent
-- Clean up the workshop
empty workshop
end tell
Example 3.6. Rename an Event
Finds an event by unique identifier, modifies the event’s name, and resubmits the updated copy.
tell application "Power Manager"
-- Copy the matching event to the workshop
duplicate the (first event whose id is "29531439-1319-4881-B980-F55424CE6F2B") of the Event Store to the end of the events of the workshop
set myEvent to the last event in the workshop
-- Modify the workshop copy
set name of myEvent to "Another Name"
-- Deploy the modified event
tell Event Store to store these events myEvent
-- Clean up the workshop
empty workshop
end tell
Example 3.7. Disable an Event
Finds an event by name, disables it, and resubmits the updated copy.
tell application "Power Manager"
duplicate the (first event whose name is "Morning") of the Event Store to the end of the events of the workshop
set myEvent to the last event in the workshop
-- Modify the workshop copy
set myEvent's enabled to false
-- Deploy the modified event
tell Event Store to store these events myEvent
-- Clean up the workshop
empty workshop
end tell
Example 3.8. Toggling an Event On and Off
This AppleScript handler finds an event by name, toggles the event’s enabled state, and resubmits the updated copy.
ToggleEvent("My Event")
-- Toggle the enabled state of a single Power Manager event
on ToggleEvent(anEventName)
-- Catch errors
try
-- Talk to Power Manager's scripting application
tell application "Power Manager"
duplicate the (first event whose name is anEventName) of the Event Store to the end of the events of the workshop
set myEvent to the last event in the workshop
-- Modify the workshop copy; toggle the enabled state
set myEvent's enabled to (not myEvent's enabled)
-- Deploy the modified event
tell Event Store to store these events myEvent
-- Clean up the workshop
empty workshop
end tell
on error (theError)
-- Something went wrong
display dialog "Error toggling '" & anEventName & "': " & theError
end try
end ToggleEvent
Example 3.9. Remove an Event by Name
Removes an event by name.
tell application "Power Manager"
tell Event Store
remove event with id (id of first event whose name is "Morning")
end tell
end tell
Example 3.10. Remove all Events
Remove all events from the schedule.
Fetches all the unique ids into a list and passes each item of the list
to the remove
command.
tell application "Power Manager"
tell Event Store
set everyID to id of every event
repeat with anID in everyID
remove event with id anID
end repeat
end tell
end tell
Example 3.11. Get an Event’s History
Get the history of an event.
tell application "Power Manager"
tell Event Store
set myEventID to id of first event
set myHistory to history for event with id myEventID
end tell
end tell
Example 3.12. Get an Event’s Last Started Date
Get the date an event was last started. If the event has not been performed, the date will be missing.
tell application "Power Manager"
tell Event Store
set myHistory to history for event with id (id of first event)
set myLastStarted to last started of myHistory
end tell
end tell
Example 3.13. Has an Event Been Performed
Find out if an event has been performed using the event’s history.
tell application "Power Manager"
tell Event Store
set myHistory to history for event with id (id of first event)
set eventHasPerformed to exists (last started of myHistory)
end tell
end tell