既存のAppleScriptファイルをサービスとして機能させるにはどうすればよいですか?


11

AppleScriptを作成し、それをファイルとしてハードドライブの特定のフォルダーに保存しました。これにショートカットを割り当てたいのですが、Automatorを介してサービスを作成する必要があるRun AppleScriptようですが、既存の.scptファイルを実行したいのですが、コードを中に入れるように求められます。どうやってするか?

回答:


9

はい、Automatorはここでの最良のオプションです。サービスを作成するには、次の手順に従います。

  1. Automatorを開き、サービスを選択します。

    ここに画像の説明を入力してください

  2. 「applescript」を検索し、アクションを右側のペインにドラッグします。

    ここに画像の説明を入力してください

  3. 常に[サービス]メニューに表示さService receives selected textれるService receives no inputように変更します。

    ここに画像の説明を入力してください

  4. と置き換えます(* Your script goes here *)

    do shell script "/usr/bin/osascript /path/to/your/script.scpt"

    既存の.scptファイルを実行する場合。osascriptは、ダイアログウィンドウの表示などのユーザー操作を処理できないことに注意してください。

    ここに画像の説明を入力してください

    この制限を克服するには、この回避策を使用するか、単に(* Your script goes here *)スクリプトの内容に置き換えます。

  5. それを保存:

    ここに画像の説明を入力してください

  6. 必要に応じて、新しいサービスへのショートカットを割り当てることができます。Finder(または開いているアプリケーション)で「サービス」>「サービス設定」を選択します。

    ここに画像の説明を入力してください

  7. あまり一般的でないショートカットを割り当てます:

    ここに画像の説明を入力してください

  8. これで、前のステップで割り当てたショートカットを介して、どのアプリケーションからでもサービスにアクセスできます。

    ここに画像の説明を入力してください

open ~/Library/Servicesサービスを削除したい場合は、サービスを削除してごみ箱を空にします。

ここに画像の説明を入力してください


Automatorに再度書き込むのではなく、既存のスクリプトファイルを実行したいと言いました。
ナキロン2013

私はコピー/貼り付けで大丈夫だと思いましたが、はい、そうです、それはあなたの質問で明確に述べられています。osascript他の回答で説明されているように、を使用します。
jaume 2013

@Nakilon osascriptAutomatorで.scptファイルを実行する方法、制限事項、2つの回避策を追加しました。
jaume 2013

私はこれをやった。動いた; しかし、スクリプトの起動には4〜5秒かかります。(コードがワークフローに直接保存された場合、ほとんどすぐに起動されました。)これを引き起こす原因、または起動を速くする方法はありますか?
ザック

1
@ザックありがとう、なぜosascriptスクリプトを実行するのにさらに4秒必要なのかはわかりませんが、Automatorが遅延の原因ではないので、これが問題でした。あなたは、デバッグすることがありosascript、見opensourcehacker.com/2011/12/02/...stackoverflow.com/questions/31045575/...
ジャウメ

4

スクリプトで、on run引数を追加します。

on run
    -- do whatever the script does
end run

次に、osascript次のコマンドでAutomatorの「シェルスクリプトの実行」アクションを使用できます。

osascript /path/to/script.scpt

osascriptシェルでAppleScriptを実行するコマンドです。AppleScriptエディターの外部でスクリプトを実行できるようにするには、スクリプト内の行が必要です。


1
明示的な実行ハンドラーを含める必要はありません。すべてのスクリプトには、暗黙の実行ハンドラーがあります。Automatorの実行AppleScriptアクションに明示的な実行ハンドラーが含まれている理由は、Automatorが特殊なon run {input, arguments}形式を使用しているためかもしれませんが、Automator でも実行ハンドラーを削除するだけで済みます。
Lri

1
@͏͏͏このpingが届くかどうか疑問に思っています。クリエイティブ名の選択についての称賛。
bmike

3

おそらく、「任意のスクリプトからMac OS Xサービスを作成する」ことができるThis Serviceを見てみたいと思います。


1
あなただけのリンクではなく、ここに答えを提供することができます
user151019

2

スクリプトにショートカットを割り当てるAutomatorサービスを作成することはお勧めしません。10.7と10.8にはバグがあり、Automatorサービスのキーボードショートカットは、メニューバーからサービスメニューにカーソルを合わせるまで機能しない場合があります。また、サービスが実行される前に、比較的長い(多分0.1〜1秒)遅延があります。

スクリプトにキーボードショートカットを割り当てる他の方法については、この回答を参照してください。私はFastScriptsとAlfredを自分で使用しています。


私はこのホバリングの必要性を経験したことがありませんか?あなたが話しているかの詳細を持っているか
markhunte

1
すべてのOS Xインストールまたはすべてのサービスに影響するかどうかはわかりませんが、さまざまなインストールで何度もこの問題に遭遇し、他のユーザーやスーパーユーザーに言及されています。Automatorのすべてのサービスのキーボードショートカットが機能しなくなることがあります(またはサービスを押しても何も起こらない)が、メニューバーからサービスメニューにカーソルを合わせるか、たとえばマウスで1つのサービスを選択すると、サービスは再び機能し始めます。
Lri

2

このような単純なオートマトンサービスで既存のスクリプトを実行できます。ショートカットをキーボードショートカット内から通常どおり割り当てます。一部のアプリケーションはショートカットを選択する前に再起動する必要がある場合があることを覚えておいてください。

例。

sayHelloスクリプト:

say "hello"

Automatorサービス: ここに画像の説明を入力してください

この例ではどちらを使用しますか:

  • 入力なし
  • 任意のアプリケーション。

アクションはシェルスクリプト実行ですコードは、UNIXコマンドosascriptとファイルへのパスを使用するだけです。 入力をstdnまたは引数に渡すことができます

つまり、スクリプトに対して特別なことを行う必要はありません。

osascriptコマンドの詳細については、そのmanページをご覧ください。manページは、スクリプトに引数を渡すことができる別の例を示しています。


0

サービスを開発するには、次のいずれかのようなサービスを作成する何らかのソフトウェアが必要です。

  1. .workflowを作成するAutomator
  2. .serviceを作成するThisService
  3. .appを作成するXcode

上記の種類のサービスはすべてパッケージです。これらはすべて、サービスの属性を指定するplistを含むフォルダーです。

ここでは、「Run AppleScript」Automatorアクションを使用して既存の.scriptを呼び出すAutomatorを使用してサービスを作成した方法を示します。

既存のAppleScriptを呼び出すAutomatorサービス

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.