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
$116.36
Apple Inc.
+0.05
MSFT
$48.36
Microsoft Corpora
-0.34
GOOG
$539.50
Google Inc.
+4.67

MacTech Search:
Community Search:

Software Updates via MacUpdate

Cyberduck 4.6 - FTP and SFTP browser. (F...
Cyberduck is a robust FTP/FTP-TLS/SFTP browser for the Mac whose lack of visual clutter and cleverly intuitive features make it easy to use. Support for external editors and system technologies such... Read more
Maya 2015 - Professional 3D modeling and...
Maya is an award-winning software and powerful, integrated 3D modeling, animation, visual effects, and rendering solution. Because Maya is based on an open architecture, all your work can be scripted... Read more
Evernote 6.0.1 - Create searchable notes...
Evernote allows you to easily capture information in any environment using whatever device or platform you find most convenient, and makes this information accessible and searchable at anytime, from... Read more
calibre 2.11 - Complete e-library manage...
Calibre is a complete e-book library manager. Organize your collection, convert your books to multiple formats, and sync with all of your devices. Let Calibre be your multi-tasking digital... Read more
Herald 5.0.1 - Notification plugin for M...
Note: Versions 2.1.3 (for OS X 10.7), 3.0.6 (for OS X 10.8), and 4.0.8 (for OS X 10.9) are no longer supported by the developer. Herald is a notification plugin for Mail.app, Apple's Mac OS X email... Read more
Firetask 3.7 - Innovative task managemen...
Firetask uniquely combines the advantages of classical priority-and-due-date-based task management with GTD. Stay focused and on top of your commitments - Firetask's "Today" view shows all relevant... Read more
TechTool Pro 7.0.6 - Hard drive and syst...
TechTool Pro is now 7, and this is the most advanced version of the acclaimed Macintosh troubleshooting utility created in its 20-year history. Micromat has redeveloped TechTool Pro 7 to be fully 64... Read more
PhotoDesk 3.0.1 - Instagram client for p...
PhotoDesk lets you view, like, comment, and download Instagram pictures/videos! (NO Uploads! / Image Posting! Instagram forbids that! AND you *need* an *existing* Instagram account). But you can do... Read more
SuperDuper! 2.7.3 - Advanced disk clonin...
SuperDuper! is an advanced, yet easy to use disk copying program. It can, of course, make a straight copy, or "clone" -- useful when you want to move all your data from one machine to another, or do... Read more
MacJournal 6.1.5 - Create, maintain, and...
MacJournal is the world's most popular journaling software for the Mac. MacJournal 6 adds a calendar mode that show entries from any journal, geolocation, word count, and progress tracking, as well... Read more

Latest Forum Discussions

See All

Square Enix Announces New Tactical RPG f...
Square Enix Announces New Tactical RPG for Mobile, Heavenstrike Rivals. Posted by Jessica Fisher on November 21st, 2014 [ permalink ] With their epic stories and gorgeous graphics, | Read more »
Quest for Revenge (Games)
Quest for Revenge 1.0.0 Device: iOS Universal Category: Games Price: $4.99, Version: 1.0.0 (iTunes) Description: The great Kingdom of the west has fallen. The gods ignore the prayers of the desperate. A dark warlord has extinguished... | Read more »
Threadz is a New Writing Adventure for Y...
Threadz is a New Writing Adventure for You and Your Friends Posted by Jessica Fisher on November 21st, 2014 [ permalink ] In the tradition of round-robin storytelling, | Read more »
SteelSeries Stratus XL Hardware Review
Made by: SteelSeries Price: $59.99 Hardware/iOS Integration Rating: 4 out of 5 stars Usability Rating: 4.5 out of 5 stars Reuse Value Rating: 4.25 out of 5 stars Build Quality Rating: 4.5 out of 5 stars Overall Rating: 4.31 out of 5 stars | Read more »
ACDSee (Photography)
ACDSee 1.0.0 Device: iOS iPhone Category: Photography Price: $1.99, Version: 1.0.0 (iTunes) Description: Capture, perfect, and share your photos with ACDSee. The ACDSee iPhone app combines an innovative camera, a powerful photo... | Read more »
ProTube for YouTube (Entertainment)
ProTube for YouTube 2.0.2 Device: iOS Universal Category: Entertainment Price: $1.99, Version: 2.0.2 (iTunes) Description: ProTube is the ultimate, fully featured YouTube app. With it's highly polished design, ProTube offers ad-free... | Read more »
Weather or Not - Reports and Forecasts...
Weather or Not - Reports and Forecasts for your Calendar 1.0.0 Device: iOS iPhone Category: Weather Price: $2.99, Version: 1.0.0 (iTunes) Description: Weather or Not is a beautiful and intuitive way to check the weather and... | Read more »
Sago Mini Road Trip (Education)
Sago Mini Road Trip 1.0 Device: iOS Universal Category: Education Price: $2.99, Version: 1.0 (iTunes) Description: Go for a fun-filled drive with Jinja the cat. Pick a destination, select a vehicle and hit the road. What will Jinja... | Read more »
New Tower Defense Game, Kingdom Rush: Or...
New Tower Defense Game, Kingdom Rush: Origins, is Available Today Posted by Jessica Fisher on November 20th, 2014 [ permalink ] iPad Only App - Designed for the iPad | Read more »
Sunburn! (Games)
Sunburn! 1.0.0 Device: iOS Universal Category: Games Price: $2.99, Version: 1.0.0 (iTunes) Description: Your ship is gone. Your crew is scattered. One option remains. Gather your crew... and jump into the sun. Reunite your... | Read more »

Price Scanner via MacPrices.net

Apple Expected to Reverse Nine-Month Tablet S...
Apple and Samsung combined accounted for 62 percent of the nearly 36 million branded tablets shipped in 3Q 2014, according to early vendor shipment share estimates from market intelligence firm ABI... Read more
Stratos: 30 Percent of US Smartphone Owners t...
Stratos, Inc., creator of the Bluetooth Connected Card Platform, has announced results from its 2014 Holiday Mobile Payments Survey. The consumer survey found that nearly one out of three (30 percent... Read more
64GB iPod touch on sale for $249, save $50
Best Buy has the 64GB iPod touch on sale for $249 on their online store for a limited time. Their price is $50 off MSRP. Choose free shipping or free local store pickup (if available). Sale price for... Read more
15″ 2.2GHz Retina MacBook Pro on sale for $17...
 B&H Photo has the 2014 15″ 2.2GHz Retina MacBook Pro on sale for $1799.99 for a limited time. Shipping is free, and B&H charges NY sales tax only. B&H will also include free copies of... Read more
New Logitech AnyAngle Case/Stand Brings Flexi...
Logitec has announced the newest addition to its suite of tablet products — the Logitech AnyAngle. A protective case with an any-angle stand for iPad Air 2 and all iPad mini models, AnyAngle is the... Read more
2013 15-inch 2.0GHz Retina MacBook Pro availa...
B&H Photo has leftover previous-generation 15″ 2.0GHz Retina MacBook Pros available for $1499 including free shipping plus NY sales tax only. Their price is $500 off original MSRP. B&H will... Read more
16GB Retina iPad mini on sale today for $199,...
 Staples has 2nd generation 16GB Retina iPad minis on sale for $199 on their online store for a limited time. Their price is $100 off MSRP. Choose free shipping or free local store pickup (if... Read more
Developers Start Designing Apps for Apple Wat...
Apple has announced the availability of WatchKit, software that gives developers a set of tools to easily create experiences designed specifically for Apple Watch. Apple’s developer community can now... Read more
C Spire Launches iPad Air 2 and iPad Mini 3 o...
C Spire has announced that iPad Air 2 with Wi-Fi + Cellular and iPad mini 3 with Wi-Fi + Cellular are now available on its 4G LTE network. C Spire offers both new iPads with a range of data plans... Read more
Are You On Your Last PC? – The ‘Book Mystique
Will your current PC be your last? Quite possibly so if you define “personal computer” as a traditional desktop or laptop form factor machine according to some commentators. So then, the upshot that... Read more

Jobs Board

*Apple* Solutions Consultant (ASC)- Retail S...
**Job Summary** The ASC is an Apple employee who serves as an Apple brand ambassador and influencer in a Reseller's store. The ASC's role is to grow Apple Read more
Project Manager, *Apple* Financial Services...
**Job Summary** Apple Financial Services (AFS) offers consumers, businesses and educational institutions ways to finance Apple purchases. We work with national and Read more
*Apple* Store Leader Program - College Gradu...
Job Description: Job Summary As an Apple Store Leader Program agent, you can continue your education as you major in the art of leadership at the Apple Store. You'll 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
Senior Event Manager, *Apple* Retail Market...
…This senior level position is responsible for leading and imagining the Apple Retail Team's global event strategy. Delivering an overarching brand story; in-store, Read more
All contents are Copyright 1984-2011 by Xplain Corporation. All rights reserved. Theme designed by Icreon.