2024/09/20

Finderで現在のウィンドウを新規タブで開くAppleScript(GUIスクリプティング)

 追記:スクリプトエディタからだと動いたのですが、アプリケーション形式にするとエラーで動きません…。


Finderで今開いているウィンドウを、もう一枚現在のウィンドウ(カレントウィンドウ)で開きたい時ってありますよね?

パスバーを表示して、目当てのフォルダをコマンド+ダブルクリックで出来るのですが、多ボタンマウスなどボタンを押すだけで開いてくれると便利かな?と思います。 ←動きません…。
WindowsのExplorerだとカレントウィンドウで開くのがデフォなのですが、なぜかMacにはいつまで経っても実装されません。

そこで、AppleScriptを使って…と思ったのですが、どうもタブ周りの操作は実装されていないらしく、仕方がないのでGUIスクリプティングで作りました。
つまり、メニューにある項目を手動でポチポチする代わりに自動でやるような感じです。
サクッと行かないので正直あまり気に入っていないのですが、一応…。

tell application "Finder"

set cntWindow to (count of windows) as integer

if cntWindow = 0 then

-- ウィンドウが無い場合はデスクトップフォルダを開く

log "ウィンドウがありません-->デスクトップを開きます"

set currentPath to POSIX path of (path to desktop folder as text)

make new Finder window to (path to desktop folder)

else

tell front window

try

-- 最前面のFinderウィンドウのパスをPOSIX形式に変換して取得

set currentPath to POSIX path of (target as alias)

on error

-- パスの取得ができない場合、デスクトップに統一

log "パスの無い特殊ウィンドウです-->デスクトップを開きます"

set currentPath to POSIX path of (path to desktop folder as text)

-- デスクトップフォルダを開く

make new Finder window to (path to desktop folder)

end try

end tell

end if

end tell


-- System EventsFinderGUIを操作

tell application "System Events"

tell process "Finder"

-- Finderがアクティブであることを確認

set frontmost to true

-- メニューバーから「新規タブ」を選択

click menu item "新規タブ" of menu "ファイル" of menu bar 1

-- 少し待機

delay 0.5

-- メニューバーから「フォルダへ移動」を選択

click menu item "フォルダへ移動…" of menu "移動" of menu bar 1

-- 「フォルダへ移動」ダイアログが開くまで少し待機

delay 0.5

-- ダイアログにPOSIXパスを入力

keystroke currentPath

-- Enterキーでフォルダに移動

delay 1 -- 入力が完了するのを待つ

keystroke return

end tell

end tell