I’m want to add Shortcuts support to my document based Mac apps.
I already support AppleScript in my apps. Should I be thinking of Shortcuts as an AppleScript alternative … providing similar functionality? It looks that way to me, but I also see some pretty big areas of missing functionality and am wondering what to do about them.
In particular AppleScript’s standard dictionary provides standard ways to work with documents and windows across app. I don’t see that in Shortcuts. Does shortcuts have some way to work with documents and windows that I’m missing?
What sort of functionally do you need?
Looking at Apple’s document based apps such as Pages I see very little shortcuts support. Are there some good document based Mac apps that have more complete shortcuts support that you can recommend?
I think you should absolutely add shortcuts support! In terms of what to add, you haven’t really explained what they do. But, as general advice I would consider any “verbs” a user can do in the app without UI as ripe for shortcuts use.
My apps are outline based, so the model will be rows, items, etc, but that’s not really what’s tripping me up right now. I think I can model that part OK.
The part that’s tripping me up is level of detail for document and window management. Just considering documents… with default AppleScript you can:
open existing documents
make new untitled documents
find by name
find by modified
I can rebuild all that with actions, but it would be a lot of actions. I think it would require that I add a dedicated “DocumentEntity” to my Shortcuts support… all possible, but I don’t see other apps building at this level of detail… and I really don’t see any other “cocoa document based apps” supporting shortcut actions at all in a big way.
So I’m still looking for some existing document based apps so that I can figure out what the standard things to leave out are.
Shortcuts provides only a small fraction of the power of an AppleScript dictionary, but [in theory] without a high barrier to entry for ordinary end-users. Shortcuts is intentionally designed to be a limited solution for the vast majority of ordinary non-technical users; not a 100% solution for the 1% of (highly specialized) users, as traditional programming languages such as AppleScript and Swift are.
Shortcuts is designed to perform simple tasks, so that’s what you should design your app’s Shortcuts support to do.
Identify the smallest number of simple common repetitive operations which most of your users perform and expose those as Shortcuts commands, quick and simple to understand and use, nicely documented and easily dictated to Siri. That’s probably a good rule of thumb there: “What would I like to tell Siri to do for me?”
There is little point attempting to expose the same advanced level of functionality your app’s AS dictionary does: even if the Apple’s crude command-only app extensions+intents system could describe such capabilities, Shortcuts as it now exists—crude, clumsy, inexpressive—is really not fit to make best use of it. The harder a user pushes Shortcuts, the quicker she will tie herself in knots. It doesn’t scale up at all. Users who want greater granularity and total flexibility are best served by dropping into AppleScript to get it†, which they can do within Shortcuts via the “Run AppleScript” action.
TL;DR: Address the 1% of needs which the 99% of users have. Nail that and delight them.
† At least till Apple decides to drop the ax on AppleScript itself, but I guess we’ll all just deal with that when it happens.
I find that when scripting my apps many times using System Events to activate a menu item is a useful escape hatch … seems like that would fit into Shortcuts pretty well, but at the moment I’m not seeing a way to do that.
Is there a built in shortcut that can activate a menu item? Or do any existing apps have an action for that?
I just download macOS 13 updates to Pages, Numbers, and Keynote to see the actions they recommend for document based apps… and nothing new from previous versions. Still just two actions to create document and open document.