Help us understand the problem. What is going on with this article?

AppleScriptで「現在ディレクトリでターミナル開く」ボタンとか「現在ディレクトリをSublimeで開く」ボタンとか「現在ディレクトリでメモを保存」などをFinderのタブに作る

※今更ですけどspotlightで検索→実行でも動きます。
あとalfredのメガサポーターならこちらの方がオススメです。自分は完全これに移行しました。


(iterm2版も追加しました @derorian3 様プルリク)

👇実装例(gif)
1Pyrm2UrCk621d8x (1).gif

導入

(1) まずはこちらのリポジトリをクローンしてください。

git clone https://github.com/ryuta69/mac-automator-library

(2) クローンしたリポジトリのopenterminal.app(もしくはopeniterm2.app)を、Command押しながらツールバーに入れてください

スクリーンショット 2019-10-08 21.33.47.png

(3) 完成。ダブルクリックしたら起動します

👇もしこういう警告が出たら、
スクリーンショット 2019-10-08 21.34.49.png

「システム環境設定>セキュリティ>一般」から許可しましょう
スクリーンショット 2019-10-08 22.10.17.png

aa.png

解説

これどうやって作ってんの?」「自分も色々作ってみたい」という方の為に。

ソースコード

これはAppleScriptで作っています。ソースコード(10/9追記 @MD5500 さん情報)は下記の通り。

openterminal.app
tell application "Finder"
    set this_folder to target of front window as alias
end tell

tell application "Terminal"
    activate
    do script "cd " & quoted form of POSIX path of this_folder
end tell

iTermはこちら👇作: @derorian3

openiterm2.app
tell application "Finder"
    -- set _dir to POSIX path of ((folder of (front window)) as alias)
    if exists Finder window 1 then
        set currentDir to target of Finder window 1 as Unicode text
        set posixPath to get POSIX path of currentDir
    end if
end tell

tell application "iTerm"
    activate
    set _current_session to current session of current window
    tell current window
        create tab with default profile

        tell current session of current tab
            write text "cd " & posixPath
        end tell
    end tell
end tell

なんとなく直感的に何やってるのかわかりますでしょうか。
このようにMacアプリ間で変数を受け取って渡す事が可能なのです。

ちなみに標準アプリである必要はなく、Sublimeなどの外部アプリとも連携できます。例えばこちらはSublimeと連携し、「現在ディレクトリをSublimeで開く」アプリになります。

openSublime.scpt
on openInSublime(theFiles)
    tell application "Sublime Text"
        open theFiles
        activate
    end tell
end openInSublime

on run
    tell application "Finder"
        if selection is {} then
            set theSelection to folder of the front window as string
        else
            set theSelection to selection as alias list
        end if
    end tell
    openInSublime(theSelection)
end run

on open (theFiles)
    openInSublime(theFiles)
end open

現在ディレクトリでメモを開きたい場合はこちら。

openMemo.scpt
on run {input, parameters}
    tell application "Finder" to make new file at (the target of the front window) as alias
    return input
end run

アプリ化

AppleScriptをダブルクリックで起動できるアプリ化するには、Automatorを使います。

(1)Automatorとか開いたことなんてほとんどの方がないと思いますが、
Macには標準で用意されてるのでアプリケーション開いてみましょう👇

スクリーンショット 2019-10-08 22.33.00.png

(2)Automatorを開いたら、下画像のように「アプリケーション」を選択しましょう。

スクリーンショット 2019-10-08 22.21.03.png

(3)編集画面に遷移したら、下画像のように「AppleScriptを実行」という項目を右半分のゾーンにドラッグアンドドロップしてください。

スクリーンショット 2019-10-08 22.21.52.png

(4)コード入力画面に、上述のAppleScriptのコードをコピペしましょう

スクリーンショット 2019-10-08 22.30.32.png

(5)ここまで出来たらセーブしてください。名前は何でもいいので「***.app」というAppファイルができるかと思います。

スクリーンショット 2019-10-08 22.31.32.png

このAppファイルをどこにおいても、ダブルクリックすれば、ターミナルがどこからでも起動できる事が確認できます。
スクリーンショット 2019-10-08 22.31.49.png

これをツールバーに突っ込めば、どこからでも起動できるAppファイルができるというわけです。

まとめ

今回のAppleScriptは一番単純なものですが、Automatorの編集画面を極めれば色々カスタマイズできる事がわかると思います。
いろいろ定常化できそうなタスクや、自動化したいコマンド操作などがある人はぜひ色々と試してみて下さい

参考
APPLESCRIPT 最速基本文法マスター
AppleScript で iTerm2 Version 3 を操作する
あとこのスクリプトを参考にしたサイトがあったはずだけど忘れてしまった・・・見つけ次第追記します。

ryuta69
ᓚᘏᗢ zzz...。oO
https://github.com/ryuta69
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした