[ Team LiB ] |
1.3 Calculation and RepetitionComputers are good at calculation and repetition—which happen to be exactly the things humans are not good at. Humans are liable to calculate inaccurately, and repetitive activity can make them careless and bored. The whole idea of having a computer is to have it take over in these situations. Here's an example. Someone on the Internet writes: "I want to rename a whole lot of image files based on the names of the folders they're in." One can just picture this user's eyes glazing over at the thought of doing this by hand. This is just the sort of thing a computer is for. The task would make a good droplet. A droplet is a kind of applet, which is a little application you write with AppleScript, such that you can drop the icons of files and folders onto the droplet's icon in order to process those files and folders in some way. (See Section 4.6 and Section 24.1.) So here's the AppleScript code for a droplet where you drop a folder onto its icon and it renames all the files in that folder as the name of the folder followed by a number: on open folderList repeat with aFolder in folderList tell application "Finder" if kind of aFolder is "Folder" then my renameStuffIn(aFolder) end if end tell end repeat end open on renameStuffIn(theFolder) set ix to 0 tell application "Finder" set folderName to name of theFolder set allNames to name of every item of theFolder repeat with aName in allNames set thisItem to item aName of theFolder set ix to ix + 1 set newName to folderName & (ix as string) try set name of thisItem to newName end try end repeat end tell end renameStuffIn The parameter folderList is handed to us as a list of whatever is dropped onto the droplet. We process each dropped item, starting with a sanity check to make sure it's really a folder. The actual renaming is done by extracting the names of the things in the folder and cycling through those names. Here's another example. The email client Mailsmith has a spam-reporting feature, which submits a spam message to the SpamCop service (http://www.spamcop.net).This service operates in three stages: the user submits the message, via email; SpamCop replies with an email message giving a URL; the user goes to that URL in a web browser and presses a final Submit button. The Report to SpamCop feature in Mailsmith performs the first stage, and SpamCop performs the second; the problem is to get from the second stage to the third. After a while, I have several email messages from SpamCop, each containing a URL; I now need to go to all of those URLs in my browser. To do so, I run the following script: tell application "Mailsmith" set allMessages to every message of incoming mail ¬ whose subject begins with "SpamCop has accepted" repeat with aMessage in allMessages set theBody to get contents of content of aMessage set theParas to every paragraph of theBody repeat with aPara in theParas if aPara begins with "http://spamcop.net/sc" then open location aPara exit repeat end if end repeat end repeat end tell The script finds all messages that come from SpamCop, and in each of those it finds the line that's the URL I'm supposed to go to and sends that URL to my web browser with the magic open location command. |
[ Team LiB ] |