TweetFollow Us on Twitter

Jun 01 Tech Review

Volume Number: 17 (2001)
Issue Number: 06
Column Tag: Tech Review

Learning AppleScript the TecSoft Way

by Ben Baumer

Longtime Apple trainer Jerry Neilsen learns me some AppleScript

‘If it's possible for a someone wearing jeans and a bright red T-shirt emblazoned with the Pizza Factory logo to feel like a big shot, it might have been me during the "Workflow Automation with AppleScript" seminar hosted by TecSoft in Santa Monica last month. Not only did Apple validate my parking, saving me a cool 18 beans, but we're talking valet. The instructor of the course, Jerry Neilsen, was a likable, walrus-sized, bearded man with a loud and deep voice. He seemed like someone who could spend his Saturday nights regaling Telemachus with Trojan War stories. Jerry has a natural knack for teaching that has been cultivated by years in the public school system, and it was a pleasure to learn AppleScript from him.

Our Introduction to AppleScript

After we were all assembled in the classroom, we ran through the introductions. The first thing that struck me about the group was the diversity of experience that we had all had on the Mac. There were graphic designers, production editors, de facto office techies, somebody who worked for NASA, and me…the smart-ass Net Admin. I was blown away by how different all of our jobs seemed to be, yet for the most part we were all using the same apps (FileMaker, Quark, Cumulus, BBEdit). Many of us had never had any previous formal training, but had simply put ourselves into positions to help others through independent learning. If there was one thing that united us, that was it. Furthermore, we were all there to take the next step in mastering our Macs, to tackle that nebulous AppleScript thing that we had heard so much about but never fully explored.

Interestingly, everyone in the room claimed to have already written at least one original AppleScript. This was a stretch for me, and I thought for a moment that I would be the group's resident neophyte. However, I was the only student who had any significant programming experience, and this turned out to be much more helpful in learning AppleScript. As we all quickly found out, AppleScript is a lot more like C++ or Java than it is like FileMaker's scripting language or Microsoft Office's Visual Basic for Applications. Jerry hammered home the point that while application-specific macro and scripting languages can operate only within the bounds of their application, AppleScript is capable of bridging applications and transferring data across. However, with this powerful ability comes increased complexity of code.

It's my bet that if you have had experience programming in high-level languages like C++ or Java, you will likely find AppleScript to be incredibly intuitive and easy. In keeping with the Macintosh credo of user-friendly interfaces, AppleScript reads like plain English. Even if you are completely unfamiliar with AppleScript syntax, you might be able to get away with just typing in what you want to happen! The following line was in one of our more advanced AppleScripts:

      set fileList to (every file whose file type is "GIFf")

where fileList is an untyped variable. Simple, right? Weakly typed variables help to make AppleScript more accessible and less cumbersome for inexperienced programmers. Jerry likes to argue that AppleScript is not just a scripting language, but a legitimate programming language. I don't know if I agree with him on that, but his point that AppleScript is much more powerful and complex than a macro language, while still less powerful and complex than a full-scale programming language, is well taken.

The Seminar Day-to-Day

We spent most of the first day and a half in a lecture-type classroom, going through the TecSoft Persuasion slide show. While I enjoyed Jerry's enthusiasm and found the presentation thorough, this part moved a little too slowly for me. If you have already learned programming, the concepts of if statements, repeat loops, and subroutines are simply old hat. All I really needed was a quick peek at the syntax and an answer to one or two questions like, "How do you declare local variables?" or "Does AppleScript include a case statement?"

Day two was a nice blend of lecturing and hands-on scripting. I'm a big believer in learning to program with a keyboard and monitor in front of you, so I thirsted for the chance to actually write something in AppleScript. Jerry helped us to customize Apple's ScriptEditor to automatically color-code our code, which seemed a little silly to me at the time, but has since proven invaluable. Before I knew it we were writing scripts that culled information from FileMaker databases or simple text files and placed it neatly in Quark documents. As soon as it became apparent how efficiently and easily AppleScript can move data between applications and documents, my thoughts turned immediately to my own job and where I would be able to use AppleScript to save time and stave off carpal tunnel syndrome. I could almost feel the MacTech CD-ROM creation process getting simpler and more automated!

The third and final day was by far the best. After a short morning lecture we broke into groups and settled into a longer project that we will explore in detail below. This is where Jerry's experience as a teacher really came through for me. Like a scruffy puppeteer he had orchestrated a situation that would result in maximal absorption of the material. I usually find planning programs out on paper to be too tedious and inconsequential for my MTV-addled brain, but in this case it did really help. I am a terrible group worker with an essentially binary attitude: either I'm calling the shots or I'm off in the corner staring at the girls in the cafeteria and dreaming about dunking on my Dad. But this was a productive group experience that was beneficial to us all; we all understood the project much better when it was over.

Our Master AppleScript

The best way to explain what we learned in the seminar might be to step through the code of our master group project and look at what's happening. The goal of this AppleScript is very general, and quite applicable to problems that most beginning scripters will want to use AppleScript to solve. The idea for this script is to drop text from a FileMaker database and images from a Cumulus database into a Quark template. Our code can be broken into three main tell blocks, each of which deals with a single application. This method of isolating applications in tell blocks is certainly not the only way write this AppleScript, but as it turns out, it is the fastest way. I think that it is also more instructive, since you only need to worry about one application at a time.

In this first tell block, we move down FileMaker's object hierarchy to isolate the data we want. In this example, we are only interested in records that are part of the "Z3" series. Accordingly, we use the show statement to show only those records, and then use another tell block to lock ourselves into that subset of data. This step eliminates the possibility of accessing data that is not in the "Z3" series.

tell application "FileMaker Pro 5.0"
   tell document "BMW Text Database"
      show (every record whose cell "Series" is "Z3")
      tell document 1
         set imageName to field "Image Name"
         — returns a list
         set textDesc to field "Text Description"
         — returns a list
      end tell
   end tell
end tell

Now, we can exploit a trick in FileMaker's AppleScript dictionary to store the data from all records in the found set into two variables (imageName and textDesc). The variables will be of data type ‘list.' Using the keyword "field" instead of "cell" returns a list of the data in all records, rather than just the data in one record. This enables us to grab all the information we need from FileMaker without using a time-consuming loop. I thought that this was a neat and compact way to store the data we wanted from FileMaker. The items in these two lists correspond with one another (i.e. - the first item in imageName comes from the same FileMaker record as the first item in textDesc).

The next step in our script was to pull the paths to images stored in a Cumulus database. Cumulus, from Canto Software, is a top-flight media asset management tool for both Mac OS and Windows. The Cumulus "collection" in question acts as a central storage place for the multimedia files needed to complete this project. Again, we used a tell block to cordon off our Cumulus work, and a list to store the paths to the images.

tell application "Cumulus S5.0"
   tell collection "BMW Image Database"
      set imagePath to {}
      — defines imagePath as an empty list
      set listlength to 0
      repeat with x in imageName
         set listlength to listlength + 1
         set nextImage to (asset of every record whose name = x as string)
         set imagePath to imagePath & nextImage
         — adds nextImage to the list imagePath
      end repeat
   end tell
end tell

In this repeat loop, we step through the list of image names that we got from FileMaker (counting the number of items at the same time) and match them with corresponding records in the Cumulus collection. The "asset" of each matched record is the full path to the image, which we will need when we want to import these image files into Quark.

At this point we have all the information we need stored in three lists of equal length: imageName, imagePath, and textDesc. We also have the number of total records stored in the variable listlength. All we have to do is step through each list and drop the corresponding items into their appropriate places in our pre-formatted Quark template. Again, we used a tell block to talk exclusively to Quark.

tell application "QuarkXPress™"
   activate
   set counter to 0
   — creates a variable that will help us keep track of which list item we are accessing
   repeat listlength times
      set counter to counter + 1
      import file (item counter of imagePath) to picture box counter of spread 1 of document 1
      set bounds of image 1 of picture box counter of spread 1 of document 1 to proportional fit
      make new text at beginning of story 1 of text box counter of spread 1 of document 1 ¬
         with properties {contents:item counter of textDesc, size:12}
   end repeat
end tell

The counter variable helps us match up the corresponding list items and identify where we are in the list. The import file statement drops the appropriate image into the appropriate picture box using the path of the image file (from Cumulus). We then resize the image proportionally to fit the box. Next, we drop the corresponding text description (from FileMaker) of the image into the appropriate text box, and set the style of the text. This process repeats for each item in the list, and we're done.

What I liked about this assignment was the general applicability of the tasks that were performed. If you ever use FileMaker, Cumulus, or Quark, chances are high that you are going to be repetitively importing and exporting data from them. Since all of these applications are exceptionally scriptable, it is a good bet that you can use AppleScript to do some of this work for you. I felt like this was a perfect example of how to make AppleScript work for you, and I had never even heard of Cumulus before this seminar.

Conclusion

This seminar is by no means limited to those who work in the technology sector. In fact, the common characteristic that my classmates and I shared was not our profession or level of technical expertise, but the applications we used on a daily basis and a proclivity towards learning new things on the Macintosh. If you are using scriptable applications like those mentioned in this article (be sure to include the Finder as well!) to do even mildly repetitive tasks, then you are a prime candidate to benefit from learning AppleScript. Both you and your company will see rewards, both immediate and in the long run. TecSoft's seminars can set you off and running in this direction.

Part of me wants to argue that TecSoft should offer separate classes for those with programming experience and those without, but I can see that that reflects only my own experience with the seminar and ignores that of the majority. Despite my occasional boredom, the seminar was extremely effective in accomplishing its main goal: teaching us how to use AppleScript to make our jobs easier. If you've already learned a high-level programming language, you can probably get away with reading a book and practicing on your own, but I feel incredibly fortunate to have had access to a teacher like Jerry Neilsen. I appreciated getting the broad overview of AppleScript without having to read a book, and having a knowledgeable instructor there to answer questions saved me some inevitable frustration. Jerry impressed upon us vigilantly the importance of learning how to use an application's dictionary on our own to find out how the program can be controlled by AppleScript. Since AppleScript is inherently dependent on third-party applications, this skill is not extra-credit, but par for the course. I definitely felt that by the end of the class, there were three things that Jerry had imparted to us that would allow me to learn all I ever wanted to know about AppleScript through practice and investigation:

A fundamental understanding of applications' object hierarchies

How to open, read, and understand an application's AppleScript dictionary

How to use the AppleScript Help menu to flesh out syntactical problems.

Simply put, the TecSoft course met its objectives. After having completed the course, I was able to write AppleScripts that enabled me to do my job more efficiently through the use of "Workflow Automation." I have Jerry Neilsen and TecSoft to thank for that, and as such, I give the seminar high marks.

References


Ben Baumer (netadmin@xplain.com) is the Network Administrator for the Xplain Corporation. He is hoping that this article will create such a firestorm that he will be able to launch a writing career and dominate the Best American Short Stories series for years to come.
 

Community Search:
MacTech Search:

Software Updates via MacUpdate

Civilization VI 1.0.6 - Next iteration o...
Sid Meier’s Civilization VI is the next entry in the popular Civilization franchise. Originally created by legendary game designer Sid Meier, Civilization is a strategy game in which you attempt to... Read more
Civilization VI 1.0.6 - Next iteration o...
Sid Meier’s Civilization VI is the next entry in the popular Civilization franchise. Originally created by legendary game designer Sid Meier, Civilization is a strategy game in which you attempt to... Read more
djay Pro 2.0.1 - Transform your Mac into...
djay Pro provides a complete toolkit for performing DJs. Its unique modern interface is built around a sophisticated integration with iTunes and Spotify, giving you instant access to millions of... Read more
Microsoft OneNote 15.41 - Free digital n...
OneNote is your very own digital notebook. With OneNote, you can capture that flash of genius, that moment of inspiration, or that list of errands that's too important to forget. Whether you're at... Read more
TechTool Pro 9.6 - Hard drive and system...
TechTool Pro has long been one of the foremost utilities for keeping your Mac running smoothly and efficiently. With the release of version 9, it has become more proficient than ever. TechTool... Read more
Apple iOS 11.2.1 - The latest version of...
iOS 11 sets a new standard for what is already the world’s most advanced mobile operating system. It makes iPhone better than before. It makes iPad more capable than ever. And now it opens up both to... Read more
Things 3.3 - Elegant personal task manag...
Things is a task management solution that helps to organize your tasks in an elegant and intuitive way. Things combines powerful features with simplicity through the use of tags and its intelligent... Read more
RapidWeaver 7.5.5 - Create template-base...
RapidWeaver is a next-generation Web design application to help you easily create professional-looking Web sites in minutes. No knowledge of complex code is required, RapidWeaver will take care of... Read more
Adobe Animate CC 2018 18.0.1.115 - Anima...
Animate CC 2018 is available as part of Adobe Creative Cloud for as little as $19.99/month (or $9.99/month if you're a previous Flash Professional customer). Animate CC 2018 (was Flash CC) lets you... Read more
Postbox 5.0.22 - Powerful and flexible e...
Postbox is a new email application that helps you organize your work life and get stuff done. It has all the elegance and simplicity of Apple Mail, but with more power and flexibility to manage even... Read more

Latest Forum Discussions

See All

Why Guns of Boom will be big for mobile...
Earlier this week, Game Insight, the minds that brought you Guns of Boom, revealed plans for an esports mode in the popular FPS title, with big implications for the game's future. Guns of Boom has been quite popular for some time now, so it's... | Read more »
Rules of Survival guide - how to boost y...
It's not easy surviving in the "every-man-for-himself" world of Rules of Survival. You'll be facing off against many other players who might be more skilled than you, or are luckier than you. There are a lot of factors weighing against you. With... | Read more »
FEZ Pocket Edition (Games)
FEZ Pocket Edition 1.0 Device: iOS Universal Category: Games Price: $4.99, Version: 1.0 (iTunes) Description: | Read more »
Amazing Katamari Damacy guide - beginner...
Amazing Katamari Damacy brings the bizarro world of the original games to mobile and shifts them into an endless format that's just as addictive as the PlayStation entries. Your goal is still to roll as much random stuff as you possibly can, though... | Read more »
Portal Knights guide - crafting tips and...
In Portal Knights, you're only as strong as the items you have at your disposal. This sandbox adventure is all about crafting and building up the next big thing. Whether you're an avid explorer or collector, crafting will likely play a large part... | Read more »
The best deals on the App Store this wee...
A new week means new discounts on the App Store. This week's deals run the gamut of action-adventure titles, puzzle games, and one of the best narrative adventure series out there. If you're looking to fill out your mobile gaming library on a... | Read more »
What you need to know about Animal Cross...
We hope you've been hard at work on collecting all of those holiday items in Animal Crossing: Pocket Camp, because you're about to get a whole new list of fun things to do as the game receives its first big update sometime soon. There are a lot of... | Read more »
Reigns: Her Majesty guide - how to use e...
Ruling a kingdom isn't easy--doubly so for a queen whose every decision is questioned by the other factions seeking a slice of power. Reigns: Her Majesty builds on the original game's swipey tactics, adding items that you can use to move the story... | Read more »
The best new games we played this week -...
Friday has crept up on us once again, so it's time to honor the best new games we've played over the past few days. This past week was a pretty exciting one, with the debut of lots of beautiful new indies and some familiar faces returning to the... | Read more »
Portal Knights guide- beginner tips and...
Portal Knights is finally making the jump to iOS and Android, and it's already climbing the ranks to become the next big MMO experience on mobile. This sprawling sandbox game will let you pursue any adventure you wish, whether you want to sling... | Read more »

Price Scanner via MacPrices.net

Beats Holiday sale at B&H, headphones and...
B&H Photo has Beats by Dr. Dre headphones, earphones, and speakers on sale for up to $80 off MSRP as part of their Holiday sale. Expedited shipping is free, and B&H charges sales tax to NY... Read more
Holiday sale: Apple resellers offer 2017 15″...
MacMall has 15″ MacBook Pros on sale for $220-$300 off MSRP, each including free shipping: – 15″ 2.8GHz MacBook Pro Space Gray (MPTR2LL/A): $2179, $220 off MSRP – 15″ 2.8GHz MacBook Pro Silver (... Read more
Holiday sale: Apple resellers offer 13″ MacBo...
B&H Photo has 13″ MacBook Pros on sale for up to $150 off MSRP. Shipping is free, and B&H charges sales tax for NY & NJ residents only: – 13-inch 2.3GHz/128GB Space Gray MacBook Pro (... Read more
Apple Watch Series 2, Certified Refurbished,...
Apple has Certified Refurbished Apple Watch Nike+ Series 2s, 42mm Space Gray Aluminum Case with Anthracite/Black Nike Sport Bands, available for $249 (38mm) or $279 (42mm). The 38mm model was out of... Read more
Apple offers Certified Refurbished 2016 12″ R...
Apple has Certified Refurbished 2016 12″ Retina MacBooks available starting at $949. Apple will include a standard one-year warranty with each MacBook, and shipping is free. The following... Read more
B&H drops price on 13″ 256GB MacBook Air...
B&H has the 13″ 1.8GHz/256GB Apple MacBook Air (MQD42LL/A) now on sale for $1079 including free shipping plus NY & NJ sales tax only. Their price is $120 off MSRP, and it’s the lowest price... Read more
Holiday sale: 9″ iPads starting at $299, take...
MacMall has 9″ WiFi iPads on sale for $30 off including free shipping: – 9″ 32GB WiFi iPad: $299 – 9″ 128GB WiFi iPad: $399 Read more
Green Monday deal: 15″ 2.8GHz MacBook Pro on...
B&H Photo has the 15″ 2.8GHz Space Gray MacBook Pro on sale for $250 off MSRP for today only as part of their Green Monday/Holiday sale. Shipping is free, and B&H charges sales tax for NY... Read more
Green Monday sale: B&H offers 12″ Apple i...
B&H Photo has 12″ iPad Pros on sale for up to $150 off MSRP as part of their Green Monday/Holiday sale. Shipping is free, and B&H charges sales tax in NY & NJ only: – 12″ 64GB WiFi iPad... Read more
Holiday deal: 21″ and 27″ Apple iMacs on sale...
MacMall has 2017 21″ and 27″ Apple iMacs on sale for up to $200 off MSRP. Shipping is free: – 21″ 2.3GHz iMac: $999 $100 off MSRP – 21″ 3.0GHz iMac: $1199 $100 off MSRP – 21″ 3.4GHz iMac: $1379 $120... Read more

Jobs Board

*Apple* Solutions Consultant - Apple (United...
# Apple Solutions Consultant Job Number: 113124408 Waterford, CT, Connecticut, United States Posted: 17-Oct-2017 Weekly Hours: 40.00 **Job Summary** Are you Read more
QA Automation Engineer, *Apple* Pay - Apple...
# QA Automation Engineer, Apple Pay Job Number: 113202642 Santa Clara Valley, California, United States Posted: 11-Dec-2017 Weekly Hours: 40.00 **Job Summary** At Read more
*Apple* Retail - Multiple Positions - Apple,...
Job Description:SalesSpecialist - Retail Customer Service and SalesTransform Apple Store visitors into loyal Apple customers. When customers enter the store, Read more
*Apple* Retail - Multiple Positions - Apple,...
Job Description: Sales Specialist - Retail Customer Service and Sales Transform Apple Store visitors into loyal Apple customers. When customers enter the store, Read more
*Apple* Retail - Multiple Positions - Apple,...
Job Description:SalesSpecialist - Retail Customer Service and SalesTransform Apple Store visitors into loyal Apple customers. When customers enter the store, Read more
All contents are Copyright 1984-2011 by Xplain Corporation. All rights reserved. Theme designed by Icreon.