DekGenius.com
[ Team LiB ] Previous Section Next Section

1.3 Calculation and Repetition

Computers 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 ] Previous Section Next Section