Apple introduced a great variety of new automation features and updates in Yosemite. I’ve written up a quick summary below with links to more detailed information. AppleScript users have been requesting a built-in progress indicator for years. In Yosemite, Apple delivers. New AppleScript properties allow script developers to show and control a traditional progress bar in applets. In Script Editor, progress is shown at the bottom of the main window. For the Scripts menu, an “Automation” menu appears to show progress.
For more information, see this short video from the new features page at macosxautomation.com.
AppleScript users have been able to access the power of Objective-C since the introduction of AppleScriptObjC five years ago. Originally, script developers had to learn to use Xcode to take advantage of this feature. In Mavericks, AppleScriptObjC can be used directly within regular scripts, but only through the use of separate script library files saved in a special format.
In Yosemite, separate libraries are no longer needed: AppleScriptObjC can be used directly in any script. Shane Stanley has released an update to his book, Everyday AppleScriptObjC, which covers how this works. As usual, Shane’s book contains a lot of powerful sample scripts with detailed explanations. In the introduction he writes, “…in Yosemite, AppleScriptObjC is available everywhere, all the time. Truly Everyday AppleScriptObjC…Welcome to the modern world of AppleScript.”
For power users of AppleScript, streamlined AppleScriptObjC access is the most significant new feature. But Yosemite also brings some improvements to AppleScript handler parameters, do shell script, as well as bug fixes. See the full release notes for more information.
Otto is getting some love in Yosemite as well. Workflows can now be saved as Dictation Commands, a new feature in Yosemite which appears to be an improvement over Speakable Items. A post by Christopher Breen at MacWorld covers how to turn on Dictation Commands and then start a workflow with a spoken command. (Red Sweater developer Daniel Jalkut discovered that Dictation Commands can also launch scripts.)
Sal Soghoian has released a set of new Automator Actions for Keynote. These are not included with Yosemite, but are available as a free download. The set includes many cool actions here, including Present Slideshow with Narrationand Add Charts with Numbers Table Data.
New scripting support in iWork applications
Pages, Numbers and Keynote now all provide scriptable access to placeholder text objects, including a tag property for specifying a custom script tag to make it easier to change objects via scripting. Pages has added the ability to assign a tag for placeholder text in the user interface with the “Script Tag” field shown below.
To demonstrate these enhancements and provide some cool mail-merge/database publishing capabilities, see the newPages Data Merge application. A demo movie provides more information.
As an automation developer, I’m always looking for better scripting support in Apple’s own applications. Even with all this news, I find the new Script Tag field in Pages one of the most encouraging automation improvements in Yosemite. It is great when Apple adds any new objects to a scripting dictionary, but to add a user interface element specifically for working with scripting automation is huge. Let’s hope we see even more of this in the future.
I’ve examined the scripting dictionaries of all three iWork applications, and beyond placeholder text and cosmetic improvements I see one new feature: Numbers has scripting support for the new Transpose feature.
AppleScript users have had access to this feature for years, but other than the good work by Doug Adams at Doug’s AppleScripts for Itunes, I have yet to see many AppleScript users adding interfaces this way. Instead, Automated Workflows and other developers have used AppleScriptObjC in Xcode to develop full-featured applications, perhaps in part due to the availability of Shane Stanley’s excellent book on the subject, AppleScript Objective C Explored. I would advise JXA users wanting to develop apps to read this book. It has an excellent summary of the most important Xcode features, and much of the information about when classes (coming via the scripting bridge) need to be coerced is applicable to JXA as well.
Extensions in Yosemite
Automation in the AppleScript world has often been about scripting multiple applications to interact with each other. For years I’ve been using AppleScript to build scripts which grab data from apps like Word, Excel or FileMaker, generate sophisticated charts and other graphics in Illustrator, use InDesign to combine it all together in a sophisticated page layout, create PDFs and then distribute the final product via e-mail, FTP or other means. AppleScript can make this into a one step-process.
The ability of Mac applications to interact with each other faced some new challenges with recent OS X sandboxing restrictions. In Yosemite, we are seeing a new effort by Apple to standardize how applications can interact: Extensions. Alex Guyot with MacStories has an excellent article covering Extensions in Yosemite. (He also discusses JXA.)
Currently, Extensions allow for some UI-centered interactivity between applications. Automation developers may find immediate use for FinderSync Extensions and possibly other types of Extensions. Will Extensions in the future allow new ways to automate complex workflows? I hope so, but much remains to be seen about how developers will employ Extensions, and if Apple will open up the technology to scripting.
The future of automation
With so many improvements I’ve only see one errant assumption made by a few people: With JXA, Apple is finally replacing AppleScript, some say. Wrong.
There are many reasons why AppleScript will continue in the future, but a single point is enough to make it clear. Note all of the improvements to AppleScript in Yosemite described above. Why bother if AppleScript was being replaced? Case closed.
Perhaps the more interesting thing to watch is whether JXA will see widespread adoption. I can see many users developing solutions with JXA in Script Editor. And a few going on to develop full-fledged applications in Xcode. But AppleScript developers have many great tools for development that go beyond using a basic editor while avoiding the challenges of Xcode: Late Night Software’s Script Debugger, Satimage’s Smile, and ASObjC Explorer are all useful development environments with different features. I’m interested to see what third-party editing and development tools will emerge for JXA, but often a strong user base must emerge first.
Regardless, with new features available in Yosemite, the future of Mac OS X automation is strong, and AppleScript will remain a big part of that.