以前Sequel ProをApplescriptで操作するのはやっていたが、昨今はSequel Aceを使うようになった。
Sequel ProとAceではFavorite.plistのPATHやUIの配置などがいくつか異なっていたため、それをまとめたい。
スクリプト
まずどういったスクリプトなのかを載せておく。お気に入りリストを取得してfzfで選択し、接続するというスクリプト。
GIFはSequel Proだが同じことがSequel Aceでも可能
ソース
#!/bin/sh # # Sequel Aceで指定した接続を開く # 引数にはSequelProの「お気に入り」の行番号を示すインデックスが入る # function run_sequel_pro() { local app='Sequel Ace' osascript -- - "$@" << EOF on run argv tell application "${app}" activate delay 0.5 tell application "System Events" tell process "${app}" set frontmost to true delay 0.5 repeat with i from 1 to (count argv) keystroke "t" using {command down} tell window "${app}" delay 0.5 tell outline 1 of scroll area 1 of splitter group 1 of window "${app}" of application process "${app}" of application "System Events" # row 1は「クイック接続」、row 2は「お気に入り」の行なので実質一番上はrow 3となる set _row_index to (item i of argv as number) + 2 select row _row_index end tell tell scroll area 2 of splitter group 1 of window "${app}" of application process "${app}" of application "System Events" click button "Connect" end tell end tell end repeat end tell end tell end tell end run EOF } function main() { local favorites=$(plutil -convert json ~/Library/Containers/com.sequel-ace.sequel-ace/Data/Library/Application\ Support/Sequel\ Ace/Data/Favorites.plist -o - | jq -r '."Favorites Root".Children[].name') local targets=($(echo "${favorites}" | fzf)) local rows=() for target in ${targets[@]}; do echo $target local row=$(echo "${favorites}" | grep -n ${target} | cut -d ':' -f 1) rows=(${rows[@]} $row) done [ ${#rows[@]} -eq 0 ] && return 130 run_sequel_pro ${rows[@]} >/dev/null } main
Sequel Pro と Ace で変わったこと
- Favorite.plistのPATH
- UI Elementの指定方法
Favorite.plistのPATH
お気に入り一覧はFavorite.plistというファイルに載っている。Sequel Proでは
~/Library/Application\ Support/Sequel\ Pro/Data/Favorites.plist
にあったが、Sequel Aceでは下記のPATHに変わっている。
~/Library/Containers/com.sequel-ace.sequel-ace/Data/Library/Application\ Support/Sequel\ Ace/Data/Favorites.plist
これは「Sequel Ace | MySQL/MariaDB database management for macOS」にも載っている。
ちなみにパスワードが知りたい場合はキーチェーンに保存されている。キーチェーンを開いて検索で「sequel」と打てば出てくるはず。
UI Elements
Sequel Proではお気に入りリストの行を選択するのに下記のようにアクセスしていた。
tell outline 1 of scroll area 1 of splitter group 1 of group 2 of window "Sequel Pro" of application process "Sequel Pro" of application "System Events"
Sequel Aceではgroup 2 of
がなくなっていた。
- tell outline 1 of scroll area 1 of splitter group 1 of group 2 of window "Sequel Pro" of application process "Sequel Pro" of application "System Events" + tell outline 1 of scroll area 1 of splitter group 1 of window "Sequel Ace" of application process "Sequel Ace" of application "System Events"
終わり
以上。Sequel AceもApplescriptで操作できてよかった。