AutomatorのクイックアクションがFinderにしか出ない理由

Automatorでクイックアクションを作りました。サウンドをMP3に変換する、画像を縮小する、ファイルをサーバに送る――そしてきちんと動きます。Finderでファイルを右クリックすると、クイックアクションの中にちゃんとあります。ところが、ほかのアプリで同じファイルを右クリックしても、そのアプリのサービスメニューを開いても、どこにも見当たりません。
壊れているわけではありません。答えは、ワークフローの一番上にあるメニューひとつです。
短い答え:「Finder.app」
どのクイックアクションも、ワークフローが受け取る現在の項目:[ファイルまたはフォルダ]という一行と、アプリケーションを選ぶ2つ目のメニュー([すべてのアプリケーション]など)で始まります。この2つ目のメニューがFinder.appになっていると、Automatorはクイックアクションに「Finderでだけ表示する」という決まりを書き込みます。macOSはこれを文字どおりに守り、ほかのすべてのアプリの「サービス」から、つまりコンテキストメニューからもアプリメニューのサービスサブメニューからも、このアクションを外します。
つまり、Finder専用のクイックアクションはほかのアプリで消えたのではなく、Finderにとどまるように作られているのです。
クイックアクションの設定を確かめる
Automatorは、作ったクイックアクションを「ライブラリ」のServicesフォルダに保存します。Finderでフォルダへ移動…(⇧⌘G)を選び、~/Library/Servicesと入力すると、クイックアクションがひとつずつ.workflowファイルとして並んでいます。Macのすべてのユーザ向けにインストールされたものは/Library/Servicesに、macOS自身のものは/System/Library/Servicesにあります。
Automatorを開かずに決まりを読むには、「ターミナル」で次のように入力します(クイックアクションの名前は自分のものに置き換えてください)。
plutil -p ~/Library/Services/"MP3に変換.workflow"/Contents/Info.plist
Finder専用のクイックアクションには、NSServicesの下に次の行があります。
"NSRequiredContext" => {
"NSApplicationIdentifier" => "com.apple.finder"
}
すべてのアプリケーション向けに作られたものには、NSRequiredContextがまったくありません。NSSendFileTypesの行は受け付けるものを表します。サウンドならpublic.audio、ビデオならpublic.movie、画像ならpublic.image、何でもならpublic.itemです。macOSに付属する選択したオーディオファイルをエンコードと選択したビデオファイルをエンコードも、まさにこの形でFinder専用になっています。
ほかのアプリにも表示させるには
「Finder.app」を「すべてのアプリケーション」に変える
- Finderで
.workflowファイルを右クリックし、このアプリケーションで開く › Automatorを選びます。 - 上部の行で、2つ目のメニューをFinder.appからすべてのアプリケーションに変えます。
- ⌘Sで保存します。
Automatorが決まりを取り除き、クイックアクションはふつうのサービスになります。
相手のアプリが何を渡すかを知る
「まだ出てこない」の多くは、2つ目の条件で説明がつきます。ファイルまたはフォルダを受け取るクイックアクションは、手前のアプリがファイルをサービスに渡す場合にしか表示されません。テキストエディタやブラウザで選択されているのはテキストであってファイルではないので、ファイル用のアクションには処理するものがなく、macOSは表示しません。表示されるのは、ファイルを扱い、サービスに対応しているアプリだと考えてください。
オンになっているか確かめる
システム設定 › キーボード › キーボードショートカット… › サービスを開きます。ファイルとフォルダの下で、サービスごとにチェックボックスがあり、チェックを外したものはどこにも表示されません。ここでキーボードショートカットを割り当てることもできます。Finderでは、コンテキストメニューの一番下にあるクイックアクション › カスタマイズ…から、Finderのクイックアクションの一覧が開き、ひとつずつオン/オフを切り替えられます。
Finderに問い合わせるアクションに注意
ワークフローが選択されたFinder項目を取得アクションで始まっていると、Finderに選択項目を問い合わせます。Finderでは右クリックしたファイルそのものですが、ほかの場所では、その時Finderのウインドウでたまたま選択されているものを取ってきます。クイックアクションはもともと選択項目を入力として受け取るので、このアクションはたいてい外してかまいません。
Finder専用のままFolia Filesで実行する
クイックアクションには手を加えたくない場合もあるでしょう。人と共有している、Finderに頼っている、あるいはmacOS自身のものだから、という場合です。Folia Filesでファイルを管理しているなら、何も変える必要はありません。Webサイト版は同じServicesフォルダを読み、Finder専用のクイックアクション――macOSがサービスから外しているもの――を、コンテキストメニューの最後、Finderで表示のすぐ後ろにあるクイックアクションサブメニューに表示します。

考え方はFinderと同じです。
- 選択に合うものだけ。 ビデオを選ぶと選択したビデオファイルをエンコード、サウンドを選ぶと選択したオーディオファイルをエンコードが表示されます。サウンドとビデオを一緒に選ぶと、どちらも表示されません。それぞれ自分の種類のファイルしか受け付けないからです。
- フォルダにも。 フォルダの何もない部分を右クリックすると、フォルダを受け付けるアクションをそのフォルダに対して実行できます。
- 重複なし。 すべてのアプリケーション向けに作られたクイックアクションは、Finderと同じくmacOSがメニューの一番最後に加えるサービスサブメニューにすでにあるので、クイックアクションには繰り返し表示されません。
- 設定が反映されます。 macOSの設定でコンテキストメニュー用にオフにしたアクションは表示されません。
- 使っている言語で。 ワークフローに翻訳があれば、名前はアプリの言語に合わせて表示されます。macOSの2つのエンコードもそうです。

実行すると何が起きるか
Folia Filesは選択した項目を、Finderと同じようにファイルとして、macOS付属のautomatorツールに渡します。
- 実行は、コピーや移動も表示するツールバーのボタン操作に、実行中のAutomatorアクションの名前とともに表示されます。
- ワークフローがウインドウを表示する場合(エンコードは最初にオプションを表示します)、Finderから実行したときと同じく、そのウインドウが前面に出てきます。そこでキャンセルすると、操作もキャンセルされます。
- 操作の横の✕で、Automatorの処理も含めて止められます。
- ワークフローが失敗すると、Automator自身のエラーメッセージが表示されます。
- 作られたもの(たいていは元のファイルの隣の新しいファイル)は、終わるとすぐにフォルダに表示されます。
サービスや共有など、コンテキストメニューのほかのツールと並んでいます。詳しくはファイルツールのページをご覧ください。
知っておきたい制限
- Webサイト版の機能です。App Store版はサンドボックスで動くため、このサブメニューはありません。
- ショートカットアプリで作ったクイックアクションは別の種類なので、ここには表示されません。サービスメニューに表示するよう設定したショートカットはサービスに表示されます。
- フォルダとして開いたZIPの中のファイル(読み出し専用)や、一度に500項目を超える選択には何も表示されません。
- サブメニューが要らなければ、設定 › コンテキストメニューで、Finderのクイックアクション(Automator)の行をメニュー内のままにするか、「その他」内に移すか、非表示にできます。右クリックメニューのカスタマイズ方法も参考にしてください。
まとめ
- Finder.appに設定されたクイックアクションには、ほかのすべてのアプリのサービスから隠す決まり(
NSRequiredContext→com.apple.finder)が入っています。 - ほかで使うには、すべてのアプリケーションに変え、キーボードショートカット › サービスでオンになっているか確かめます。ファイル用のアクションには、ファイルを渡してくれるアプリが必要なことも覚えておきましょう。
- あるいはそのままにして、Folia Filesのコンテキストメニューのクイックアクションから実行します。


