Open2
Scriptableとショートカットの連携
ショートカットでのScriptable呼び出し
Scriptableのショートカットアクションは次の2つ。
-
Run Script
Scriptable内のスクリプトを実行する -
Run Inline Script
ショートカットアクション内に書かれたコードを実行する
上記いずれかのアクションを使って実行する。
引数の渡し方(ショートカット→Scriptable、ショートカット側)
ショートカットから渡せるのは次の5種類。
-
Parameter
欄 -
Texts
欄 -
URLs
欄 -
Images
欄 -
Files
欄
シングルタップでファイルピッカーが現れるものもあるが、プレス(長押し)すると変数が選べる。
たいていはParameter
で用が足りる。渡したいものを辞書アクションで用意し、その辞書を渡すことが多い。
引数受取(ショートカット→Scriptable、Scriptable側)
-
Parameter
欄…args.shortcutParameter:any
-
Texts
欄…args.plainTexts:[string]
-
URLs
欄…args.urls:[string]
-
Images
欄…args.images:[Image]
-
Files
欄…args.fileURLs:[string]
戻り値セット(Scriptable→ショートカット、Scriptable側)
Script.setShortcutOutput(output)
でショートカットへ値を返せる。
Script.complete()
でスクリプトの実行完了をシステムに通知する。
戻り値受取(Scriptable→ショートカット、ショートカット側)
アクションのマジック変数を使って受け取る。
Scriptable側のコードを書く時の注意点
Script.complete()
は必ず呼び出す
Scriptableでスクリプトの実行完了を明示的に通知すること(Script.complete()
)。これをしないとショートカット側は「Scriptableスクリプト終わらないな」と待った挙句にタイムアウトで実行失敗扱いしてしまう。
Script.complete()
しても無効
インポートしたモジュール内でimportModule()
を使う場合、モジュール内でScript.complete()
を実行しても認識されない。トップレベルスクリプト(ショートカットから直接呼び出されたスクリプト)でScript.complete()
を実行すること。
Run Script
は起動が遅いことがある→Run Inline Script
を使う
Scriptable はスクリプトを iCloud Drive で管理しているため、Run Script
でスクリプトを呼び出すと「まず同期を済ませてからですね」と待たされることがある。
アクション内にインラインでスクリプトを書ける Run Inline Script
アクションはiCloud同期をパスできるようで、起動が素早い。
ちょっとした処理を素早く済ませたい場合は積極的にRun Inline Script
アクションを使うとよい。