TweetFollow Us on Twitter

More Fun With AppleScript

Volume Number: 20 (2004)
Issue Number: 2
Column Tag: Programming

Getting Started

by Dave Mark

More Fun With AppleScript

In last month's column, we installed Script Menu to help us organize our scripts, and then started digging into the Finder's AppleScript dictionary. Fantastic stuff! Hopefully, you've had a chance to play. If not, launch Script Editor, select Library from the Window menu, then double-click on the Finder entry in the Library list. A Finder dictionary window should appear.

Click on the line in the left pane labeled Finder Basics. The classes and commands associated with the Finder Basics AppleScript suite will appear (see Figure 1). Notice that the Finder Basics are divided into Properties and Elements. Think of properties as class data and the elements as objects within the class.


Figure 1. The Finder Basics dictionary entries.

For example, go into the Script Editor and type this script:

tell application "Finder"
   get name
end tell

When you run this script, here's what appears in the results field:

"Finder"

This is the value of the name property of the Finder. If you are running Panther, here's the result of the command get version:

"10.3"

Here's an interesting one. First, do a get startup disk:

startup disk of application "Finder"

Now do a get name of startup disk:

"Macintosh HD"

See the difference? Startup disk is a reference to the startup disk, whereas name of startup disk is a string containing the name of the startup disk. If you look in Figure 1, you'll see that startup disk is of type disk. The disk class is defined in the Containers and folders suite. The class is shown in Figure 2. Notice that the dictionary shows the plural form of disk as disks. The dictionary also shows the elements and properties of the disk class.


Figure 2. The disk class entries of the Containers and folders suite.

Try the command get format of startup disk. Remember, format is a property of the disk class and startup disk is defined as being of class disk. Here's the result on my Mac:

Mac OS Extended format

Now try get journaling enabled of startup disk. Here's the result:

true

As you might expect, Boolean properties return either true or false. The command get ignore privileges of startup disk returns:

false

Finder Basics - Elements

Go back to Figure 1 and take a look at the elements in the Finder Basics suite. These are the objects that you might expect the Finder to encounter. What do you think the result will be of running this script:

tell application "Finder"
   get items
end tell

It helps to have a sense of the item class. An item is basically a generic object - pretty much anything that could exist in a Finder window or on the desktop. Here's the result I got when I ran the script on my Mac:

{startup disk of application "Finder", disk "Macintosh HD" of application 
"Finder", folder "AE Monitor 1.0" of desktop of application "Finder", document file 
"DSC_0751.JPG" of desktop of application "Finder", folder "InDesign CS Example Scripts" 
of desktop of application "Finder", folder "UI Element Inspector" of desktop of application 
"Finder", alias file "Warcraft III" of desktop of application "Finder", folder "wedding_pics" 
of desktop of application "Finder", document file "Xcode notes" of desktop of application "Finder"}

Look through this list of items. Note the curly braces, necessary to making this a proper list. Take a look at the nomenclature, especially the use of the word "of" all over the place. Think containers/enclosures, items within items within items.

Figure 2 shows the listing of the Finder items suite in a dictionary window. Check out the list of properties. Note that an item has an index. Look in the list of items in the previous list, returned by the get items command. What do you think will happen when I run the command get item 2. Here's my result:

disk "Macintosh HD" of application "Finder"


Figure 3. The item class in the Finder items suite.

As you might expect, get item 2 returns the second item in the list returned by get items. Now, what do you suppose you'd get from this command:

get container of item 2

In my case, I got:

folder "Dave Mark's Computer" of application "Finder"

Brave New Make

So far, all we've done is suck information out of the Finder. Let's try making something.

In the Finder's dictionary window, click on the Commands line in the Standard Suite. The commands supported by all subsequent suites are listed. One of these is the make command. The details are shown in Figure 4.


Figure 4. Details on the make command.

Here's a script to create a new folder at the current insertion location (the desktop).

tell application "Finder"
   make new folder with properties {name:"blap"}
end tell

This tells the Finder to create a new folder at the current insertion location (since I didn't specify a new location) with the specified properties. Since I only specified a single property, this will be pretty simple. I ran this script and a new folder named "blap" appeared on my desktop. Here's the result returned by my script:

folder "blap" of folder "Desktop" of folder "davemark" of folder "Users" 
of startup disk of application "Finder"

Does this make sense? You can see the containment hierarchy as it walks its way out from the new folder to the top of my hard drive and Finder itself.

Now that "blap" exists, let's try running the script again. Hrm. As you can see in Figure 5, we got an error, telling us that the folder already exists.


Figure 5. An error is reported when I try creating a folder that already exists. Hrm.

Having Script Editor report the error is very useful if you are testing your script or just playing. But if you deliver this script as a compiled entity to a user, you'll want the program to handle the errors itself. Here's a new version of the script:

tell application "Finder"
   try
      make new folder with properties {name:"blap"}
   on error error_message
      display dialog error_message
   end try
end tell

Running this script produces the dialog shown in Figure 6. Much better. Now the script uses a try block and a corresponding on error block to pass the incoming error message to the display dialog command.


Figure 6. A simple error dialog.

Here's the result of running this script (I clicked the OK button):

{button returned:"OK"}

Till Next Month...

Hopefully, you are getting a bit more familiar with the AppleScript Finder dictionary and the way you can take advantage of properties, elements, and commands. Now that you have a sense of the Finder, open up some other dictionaries. A great one to play with is the TextEdit dictionary. A lovely place to create text elements and copy them to the clipboard for use in other applications. Try your hand at manipulating TextEdit. See what you can do with it.

We will return to AppleScript at some point (I love it too much not to) but next month's column is going back to Cocoa. I am heading down to Atlanta to Aaron Hillegass' Big Nerd Ranch for a week of intensive Cocoa training. I am very excited about this. Model View Controller, Model View Controller. See you next month! J


Dave Mark is a long-time Mac developer and author and has written a number of books on Macintosh development, including Learn C on the Macintosh, Learn C++ on the Macintosh, and The Macintosh Programming Primer series. Be sure to check out Dave's web site at http://www.spiderworks.com.

 
AAPL
$101.58
Apple Inc.
+0.72
MSFT
$46.52
Microsoft Corpora
-0.24
GOOG
$584.77
Google Inc.
+4.82

MacTech Search:
Community Search:

Software Updates via MacUpdate

iExplorer 3.5.0.0 - View and transfer al...
iExplorer is an iPhone browser for Mac lets you view the files on your iOS device. By using a drag and drop interface, you can quickly copy files and folders between your Mac and your iPhone or... Read more
BusyCal 2.6 - Powerful calendar app with...
BusyCal is an award-winning desktop calendar that combines personal productivity features for individuals with powerful calendar sharing capabilities for families and workgroups. BusyCal's unique... Read more
Apple iOS 8.0 - The latest version of Ap...
The latest version of iOS can be downloaded through iTunes. Apple iOS 8 comes with big updates to apps you use every day, like Messages and Photos. A whole new way to share content with your family.... Read more
Apple Digital Camera RAW Compatibility 5...
Apple Digital Camera RAW Compatibility update adds RAW image compatibility to Aperture 3 and iPhoto '11. For more information on supported RAW formats, see here.Version 5.07: Adds RAW camera... Read more
Transmit 4.4.7 - Excellent FTP/SFTP clie...
Transmit is an excellent FTP (file transfer protocol), SFTP, S3 (Amazon.com file hosting) and iDisk/WebDAV client that allows you to upload, download, and delete files over the internet. With the... Read more
Macgo Blu-ray Player 2.10.8.1715 - Blu-r...
Macgo Mac Blu-ray Player can bring you the most unforgettable Blu-ray experience on your Mac. Overview Macgo Mac Blu-ray Player can satisfy just about every need you could possibly have in a Blu-ray... Read more
Capture One Pro 8.0.0.433 - RAW workflow...
Capture One Pro 8 is a professional RAW converter offering you ultimate image quality with accurate colors and incredible detail from more than 300 high-end cameras -- straight out of the box. It... Read more
Adobe Acrobat Pro 11.0.09 - Powerful PDF...
Adobe Acrobat allows users to communicate and collaborate more effectively and securely. Unify a wide range of content in a single organized PDF Portfolio. Collaborate through electronic document... Read more
Adobe Reader 11.0.09 - View PDF document...
Adobe Reader allows users to view PDF documents. You may not know what a PDF file is, but you've probably come across one at some point. PDF files are used by companies and even the IRS to... Read more
iFFmpeg 4.6.1 - Convert multimedia files...
iFFmpeg is a graphical front-end for FFmpeg, a command-line tool used to convert multimedia files between formats. The command line instructions can be very hard to master/understand, so iFFmpeg does... Read more

Latest Forum Discussions

See All

Leg·end·ar·y (Games)
Leg·end·ar·y 1.0 Device: iOS Universal Category: Games Price: $1.99, Version: 1.0 (iTunes) Description: Simple and yet complex. Leg•end•dar•y is a grid-based puzzle game based on numbers. Discover the adventure of Leg•end•dar•y and... | Read more »
KuaiBoard (formerly QuickBoard) (Utilit...
KuaiBoard (formerly QuickBoard) 1.0 Device: iOS Universal Category: Utilities Price: $1.99, Version: 1.0 (iTunes) Description: KuaiBoard is currently 50% off for launch! Billing info. Signatures. Locations. KuaiBoard allows you to... | Read more »
Treasure Fetch - Adventure Time (Games)
Treasure Fetch - Adventure Time 1.0.1 Device: iOS Universal Category: Games Price: $2.99, Version: 1.0.1 (iTunes) Description: Adventure Time Treasure Fetch is a fresh take on the classic Snake game! STRETCHY JAKE Snake your way... | Read more »
Light in the Dark (Games)
Light in the Dark 1.1.0 Device: iOS Universal Category: Games Price: $1.99, Version: 1.1.0 (iTunes) Description: Be enlightened by this delightful puzzle game that has never before seen the light of day! "A physics and color-blending... | Read more »
Transmit iOS (Utilities)
Transmit iOS 1.0 Device: iOS Universal Category: Utilities Price: $9.99, Version: 1.0 (iTunes) Description: >> LAUNCH SPECIAL: Transmit iOS is ONLY $10 for a LIMITED TIME. << THE #1 FILE TRANSFER CLIENT FOR THE MAC NOW... | Read more »
Minuum - The Little Keyboard for Big Fin...
Minuum - The Little Keyboard for Big Fingers 1.0 Device: iOS iPhone Category: Utilities Price: $1.99, Version: 1.0 (iTunes) Description: Type faster, see more of your screen, and take control of autocorrect with Minuum: the little... | Read more »
TextExpander 3 + custom keyboard (Utili...
TextExpander 3 + custom keyboard 3.0 Device: iOS Universal Category: Utilities Price: $4.99, Version: 3.0 (iTunes) Description: | Read more »
Swype - Keyboard (Utilities)
Swype - Keyboard 1.0.1411 Device: iOS Universal Category: Utilities Price: $.99, Version: 1.0.1411 (iTunes) Description: Why type when you can Swype? One of the most requested apps for iPhone is finally here. "If Swype itself ever... | Read more »
Joinz (Games)
Joinz 1.0 Device: iOS Universal Category: Games Price: $1.99, Version: 1.0 (iTunes) Description: Joinz is a clever block sliding puzzle game that is easy to play, nice to look at but tricky to master. You will be coming back again... | Read more »
Little World Escape Review
Little World Escape Review By Jordan Minor on September 17th, 2014 Our Rating: :: EARTHBOUNDUniversal App - Designed for iPhone and iPad Little World Escape draws players in with captivating concepts before pushing them away with... | Read more »

Price Scanner via MacPrices.net

Toshiba Introduces TransMemory ID High-Speed...
Toshiba’s Digital Products Division (DPD), a division of Toshiba America Information Systems, Inc., today introduced the TransMemory ID USB 3.0 Flash Drive, a simpler storage solution for people who... Read more
New iPads and OS X Yosemite Release Coming Oc...
The DailyDot’s Micah Singleton reports that Apple is planning to hold its next product announcement event on Oct. 21, at which it will unveil the iPad Air 2 and iPad mini 3 and release a final build... Read more
Logitech Bluetooth Multi-Device Cross-Platfor...
Logitech has an enviable track record of making some of the best computer keyboards and mice. At least in my estimation, the best freestanding keyboards I’ve ever used have been Logitech units,... Read more
Roundup of Apple refurbished iPad Airs and iP...
Apple is offering Certified Refurbished iPad Airs for up to $140 off MSRP. Apple’s one-year warranty is included with each model, and shipping is free. Stock tends to come and go with some of these... Read more
Sprint offers 16GB iPad mini for $199.99 with...
Sprint is offering 1st generation 16GB iPad minis for $199.99 with a 2-year service agreement. Standard MSRP for this iPad is $429. Their price is the lowest available for this model. Read more
2.5GHz Mac mini remains on sale for $549, sav...
B&H Photo has the 2.5GHz Mac mini on sale for $549.99 including free shipping. That’s $50 off MSRP, and B&H will also include a free copy of Parallels Desktop software. NY sales tax only. Read more
Apple refurbished iMacs available for up to $...
The Apple Store has Apple Certified Refurbished iMacs available for up to $300 off the cost of new models. Apple’s one-year warranty is standard, and shipping is free. These are the best prices on... Read more
13″ 2.5GHz MacBook Pro offered for $100 off M...
B&H Photo has the 13″ 2.5GHz MacBook Pro on sale for $999.99 including free shipping plus NY sales tax only. Their price is $100 off MSRP. Read more
Free GIMP Professional Grade Graphics App Ver...
The latest 2.8.14 version of the oddly-named GIMP (acronym for: GNU Image Manipulation Program) open source, high-end image editing and creation alternative to Adobe’s Photoshop and refuge from... Read more
Apple Announces Record Pre-orders for iPhone...
Apple has released metrics showing a record number of first day pre-orders of iPhone 6 and iPhone 6 Plus, with over four million sold in the first 24 hours. Demand for the new iPhones exceeds the... Read more

Jobs Board

*Apple* Retail - Multiple Positions (US) - A...
Sales Specialist - Retail Customer Service and Sales Transform Apple Store visitors into loyal Apple customers. When customers enter the store, you're also the Read more
*Apple* Retail - Multiple Positions (US) - A...
Sales Specialist - Retail Customer Service and Sales Transform Apple Store visitors into loyal Apple customers. When customers enter the store, you're also the Read more
*Apple* Retail - Multiple Positions (US) - A...
Sales Specialist - Retail Customer Service and Sales Transform Apple Store visitors into loyal Apple customers. When customers enter the store, you're also the Read more
*Apple* Retail - Multiple Positions (US) - A...
Sales Specialist - Retail Customer Service and Sales Transform Apple Store visitors into loyal Apple customers. When customers enter the store, you're also the Read more
*Apple* Retail - Multiple Positions (US) - A...
Sales Specialist - Retail Customer Service and Sales Transform Apple Store visitors into loyal Apple customers. When customers enter the store, you're also the Read more
All contents are Copyright 1984-2011 by Xplain Corporation. All rights reserved. Theme designed by Icreon.