回答:
はい、Automatorはここでの最良のオプションです。サービスを作成するには、次の手順に従います。
Automatorを開き、サービスを選択します。
「applescript」を検索し、アクションを右側のペインにドラッグします。
常に[サービス]メニューに表示さService receives selected text
れるService receives no input
ように変更します。
と置き換えます(* Your script goes here *)
:
do shell script "/usr/bin/osascript /path/to/your/script.scpt"
既存の.scpt
ファイルを実行する場合。osascriptは、ダイアログウィンドウの表示などのユーザー操作を処理できないことに注意してください。
この制限を克服するには、この回避策を使用するか、単に(* Your script goes here *)
スクリプトの内容に置き換えます。
それを保存:
必要に応じて、新しいサービスへのショートカットを割り当てることができます。Finder(または開いているアプリケーション)で「サービス」>「サービス設定」を選択します。
あまり一般的でないショートカットを割り当てます:
これで、前のステップで割り当てたショートカットを介して、どのアプリケーションからでもサービスにアクセスできます。
open ~/Library/Services
サービスを削除したい場合は、サービスを削除してごみ箱を空にします。
osascript
他の回答で説明されているように、を使用します。
osascript
Automatorで.scpt
ファイルを実行する方法、制限事項、2つの回避策を追加しました。
osascript
スクリプトを実行するのにさらに4秒必要なのかはわかりませんが、Automatorが遅延の原因ではないので、これが問題でした。あなたは、デバッグすることがありosascript
、見opensourcehacker.com/2011/12/02/...とstackoverflow.com/questions/31045575/...
スクリプトで、on run
引数を追加します。
on run
-- do whatever the script does
end run
次に、osascript
次のコマンドでAutomatorの「シェルスクリプトの実行」アクションを使用できます。
osascript /path/to/script.scpt
osascript
シェルでAppleScriptを実行するコマンドです。AppleScriptエディターの外部でスクリプトを実行できるようにするには、スクリプト内の行が必要です。
on run {input, arguments}
形式を使用しているためかもしれませんが、Automator でも実行ハンドラーを削除するだけで済みます。
おそらく、「任意のスクリプトからMac OS Xサービスを作成する」ことができるThis Serviceを見てみたいと思います。
スクリプトにショートカットを割り当てるAutomatorサービスを作成することはお勧めしません。10.7と10.8にはバグがあり、Automatorサービスのキーボードショートカットは、メニューバーからサービスメニューにカーソルを合わせるまで機能しない場合があります。また、サービスが実行される前に、比較的長い(多分0.1〜1秒)遅延があります。
スクリプトにキーボードショートカットを割り当てる他の方法については、この回答を参照してください。私はFastScriptsとAlfredを自分で使用しています。
このような単純なオートマトンサービスで既存のスクリプトを実行できます。ショートカットをキーボードショートカット内から通常どおり割り当てます。一部のアプリケーションはショートカットを選択する前に再起動する必要がある場合があることを覚えておいてください。
例。
sayHelloスクリプト:
say "hello"
Automatorサービス:
この例ではどちらを使用しますか:
アクションはシェルスクリプト の実行ですコードは、UNIXコマンドosascriptとファイルへのパスを使用するだけです。 入力をstdnまたは引数に渡すことができます
つまり、スクリプトに対して特別なことを行う必要はありません。
osascriptコマンドの詳細については、そのmanページをご覧ください。manページは、スクリプトに引数を渡すことができる別の例を示しています。