macOS 12で標準搭載された「ショートカット.app」(Automatorを置き換える簡易ワークフロー構築・実行ツール)を操作して(実際にはGUIなしのShortcuts Events.app)、自分がiCloud上で共有しているショートカット・ワークフローのインストールと実行を行わせるAppleScriptです。
ショートカット・ワークフローはローカルではなくiCloud上に置かれています。それらは「名前」で識別できますが、ユニークなIDが振られているわけではありません。ものすごく不満ですが、一応識別できることにしましょう。
ショートカット・ワークフローは「共有」することが可能で、とくに「リーディングリストで共有」すると、iCloud上の生URLが得られる(SafariのURL欄に表示される)ため、このURL情報を共有すれば「指定のショートカット・ワークフローが存在していない場合にはiCloud上からインストールさせる」という処理が可能になります。
# このあたり、まだ試行錯誤中なので「現時点ではこういう運用をしている」という程度です
今日確認したら、「ファイル」メニューの「共有」に「iCloudリンクをコピー」という項目がありました。
リンクをコピーする機能を入れるなら「編集」メニューではないのかと思わないではないですが、機能的にはこちらがシンプルなのでご利用ください。
お使いの環境に指定のショートカット・ワークフローがインストールされていない場合には、インストールを求めます。ただ、単なる「名称」でしかチェックしていないのと、あらかじめ「同じ名前で内容が違うショートカット」が存在していたら、「インストールずみ」と判定してしまうので、一意に識別できるユニークな識別子がショートカット・ワークフローについていないのはどうかと思います。入手先のiCloud URLでもよいのですが、、、、
# 一応、コンピュータ上で互いを識別するための「id」は持っています
ここで、インストールを行わなかった場合には、それを検出してダイアログ表示します。
AppleScript名:Shortcuts Eventsでショートカットのインストール+実行.scpt |
— – Created by: Takaaki Naganoya – Created on: 2021/11/01 — – Copyright © 2021 Piyomaru Software, All Rights Reserved — set aName to "ASTEST3" –Shortcut名称 set aURL to "https://www.icloud.com/shortcuts/e788482535704922aaa9f617491353b2" –共有URL set sRes to installAndRunShortcuts(aName, aURL) of me –Install Shortcut and run it on installAndRunShortcuts(aName, aURL) tell application "Shortcuts Events" set n1List to name of every shortcut end tell if n1List does not contain aName then display notification "Plese Install my Shortcuts workflow" open location aURL end if tell application "Shortcuts Events" set n2List to name of every shortcut end tell if n2List does not contain aName then display dialog "I can’t run my Shortcuts because you canceled installing" return false end if tell application "Shortcuts Events" run shortcut aName return true end tell end installAndRunShortcuts |
2021年に書いた価値あるAppleScript – AppleScriptの穴 says:
[…] 11/1 Shortcuts Eventsでショートカットのインストール+実行 […]