macOS 12で新規搭載された「ショートカット.app」、このアプリケーション上で記述するワークフローを「ショートカット」、ショートカットを構成する各コマンドを「アクション」と呼びます。
ショートカット.appは日本語ローカライズされた名称であって、実際には「Shortcuts.app」という名前です。
AppleScript用のショートカット実行GUIなしアプリケーション「Shortcuts Events.app」が別途(ショートカット.appのバンドル内に)存在しており、こちらもAppleScript用語辞書を備えています。
Shortcuts.appに対してコマンドを実行すると、同アプリケーションが起動します。Shortcuts Events.appに対してコマンドを実行すると、Shortcuts.appは起動しません。
両者とも辞書内容は一緒であり、バージョン番号と名前以外に差異はありません。
| AppleScript名:ショートカットのプロパティを取得.scpt |
| tell application "Shortcuts" properties –> {frontmost:false, class:application, name:"Shortcuts", version:"5.0"} end tell |
| AppleScript名:Shortcuts Eventsのプロパティを取得.scpt |
| tell application "Shortcuts Events" properties –> {frontmost:false, class:application, name:"Shortcuts Events", version:"1.0"} end tell |
ショートカット.appを起動するとこのようなウィンドウが表示されます。
あるいは、このようなウィンドウです。
ショートカット一覧が並んだ表示状態で実行することもできますし、ダブルクリックして個別ウィンドウ表示した状態で実行することも可能です。
また、メニューから実行することも可能です。
環境設定では、以下のような設定が行えます。「詳細」に「スクリプトの実行を許可」の項目があり、デフォルトではオフになっています。当然、ここはオンにします。他の項目についても適宜、自己責任でオンにすることになります。
ショートカット(ワークフロー)はローカルに保存されません。iCloud上に保存されます。
ショートカット(ワークフロー)の共有はコンテクストメニューから行います。このさい、iCloud上のURLが直接表示されないため、少々面倒な感じです。
「リーディングリスト」で共有すると、WebブラウザのURL欄に詳細なURLが表示されるため、これを用いるとよさそうです。
https://www.icloud.com/shortcuts/e788482535704922aaa9f617491353b2
新規ショートカットの作成には、メニューから「ファイル」>「新規ショートカット」(Command-n)を実行するか、ショートカット.appのウィンドウでツールバーの「+」をクリックします(すべてのショートカット、My Shortcutなど選択中のフォルダによって表示/非表示状態が変わります)。
初期状態はこんな(↑)感じです。アクションを選択してダブルクリックするか、ビュー上にドラッグ&ドロップするとアクションが置かれます。
最初なので、ダイアログでも出しておきましょう。
ツールバー上の「▶︎」ボタンをクリックするか、Command-rでショートカット(ワークフロー)を実行します。
ショートカットは名前で識別することになります。ツールバー上の名称を変更すると名前を付けられます。
AppleScript側からはこの名前「AS TEST2」を指定して呼び出すことになります。
| AppleScript名:ショートカット.appでショートカット実行.scpt |
| tell application "Shortcuts" run shortcut "AS TEST2" end tell |
| AppleScript名:Shortcuts Eventsでショートカット実行.scpt |
| tell application "Shortcuts Events" run shortcut "AS TEST2" end tell |
現在のところ、Shortcuts.appならびにShortcuts Events.appのrunコマンドでパラメータを指定すると実行時にエラーになるので、パラメータをAS側からショートカット側に指定できていません。クリップボード経由で指定するとかいってアクロバット技を使えばできないことはありませんが、パラメータを指定できないのは明らかな「バグ」です。
あとは、他のプログラムとの相互運用性を高めるためには、ショートカット側の実行結果をAS側に返してくれることが望ましいです。オブジェクトによっては、sdefを通じてやりとりできないCocoa Object(CLLocationなど)もありますが、結果は得られるべきでしょう。
ショートカット.appについては、ヘルプにけっこうな内容の説明が書かれているので、まずはそちらを読むとよいでしょう。ただ、日本語訳がよくないのか「お前は何を言ってるんだ?」という表現が散見され、説明文というよりも広告みたいな内容の箇所もあります。
















































