Automate daily chores with AppleScript
I had a moment of self-doubt the other morning: am I man or automaton? The question came up when I fired up my office computer and started manually launching one set of programs and changing the statuses on others.
“Why,” I asked myself, “do I do the same set of repetitive tasks every morning and every evening when I have AppleScript?” I couldn’t answer my own question.
So I fired up AppleScript Editor (Applications/Utilities), and started to type. My goal was to create a script that would perform all the little steps I take at the beginning and end of each computing day. This is what I came up with:
set s to display dialog “Arriving or Leaving?” buttons [“Arriving”, “Leaving”] default button “Arriving” if button returned of s is equal to “Arriving” then tell application "Mailsmith" set auto checking enabled to true check mail end tell tell application "iChat" activate log in set status message to "Working" end tell tell application "Echofon" activate end tell tell application "NetNewsWire" activate end tell else tell application "iChat" quit end tell tell application "Mailsmith" set auto checking enabled to false end tell tell application "Echofon" quit end tell tell application "NetNewsWire" quit end tell tell application "Finder" activate set frontmost to true set visible of every process whose visible is true and name is not "Finder" to false end tell end if
The first line of script creates a dialog box that asks me if I’m arriving or departing, setting the default answer to arriving. You could add additional options by inserting them in quotation marks, separated by commas, in the list after
buttons. For instance,
[“Arriving”, “Lunch”, “After Lunch”, “Departing”]
The next line checks my response. If I click on Arriving, the script carries out the first series of application actions. If I click on Departing, it performs the second batch (after
For those of you who haven’t used AppleScript before: You’ll see the format for each individual action is the same:
tell specifies a program, the indented block tells it what to do, and the
end tell ends that section. Some of the commands in those indented blocks are generic (
activate). Others are more specific to the particular program. The latter are found in the AppleScript Editor’s libraries (Window -> Library); if you don’t see the program you want, click the + (plus sign) in the top of the Library window and select the program from your Applications folder.
For instance, for my e-mail client Mailsmith, I added one command that changes the property of auto checking (
set auto checking enabled to true) and another to add the
check mail. Similarly with iChat:
log in is a simple command, while
set status message to "Working" is only slightly more complicated.
You can script any application to activate itself first thing in the morning. True, you could add them to a list of Login Items for your user account in System Preferences’ Accounts pane. But I like the finer control over when and how they launch that I get from AppleScript.
To make this script easy to run, I save it as an application in AppleScript Editor (File -> Save As, then selecting Application as the file format). This creates a self-contained application that I can run at will. If I really wanted to be regimented about it, I could add an iCal event that would launch the app every morning at 9:00 a.m. and every evening at 5:00. But I don’t work that way.
This script might save me just a tiny sliver of time each day. But I suspect that, over over several years, it adds up to tens of hours when I don’t have to be a robot.