Autometerの操作はApple Scriptにコピペできる

前回のエントリーでは、AppleScriptでプログラムを書くにあたってメニューアイテムへのアクセス方法がわからないというようなことを書いた。

ところがTwitterには親切な人がいて「Autometerで記録をすると、それがスクリプトエディターにコピペできますよ」ということを教えてもらった。実際にやってみたら、ものすごく簡単に次のようなプログラムができた。System Eventsから操作するのではなくUI Scriptに値をセットしているようだ。また”がエスケープされている。

Autometerではデフォルトでセットされているライブラリ以外のアプリを操作できないと漠然と信じていたのだが単純に記録ボタンを押せばよいということのようだ。スクリプトエディターで記録できないアプリも増えていたのだが、実はAutometerに移ってしまっているということのようらしい。

— Dock “FileZilla”をクリックします。

delay 7.286334

set timeoutSeconds to 2.0

set uiScript to “click UI Element \”FileZilla\” of list 1 of application process \”Dock\””

my doWithTimeout(uiScript, timeoutSeconds)

— “File”メニューをクリックします。

delay 3.94404

set timeoutSeconds to 2.0

set uiScript to “click menu bar item \”File\” of menu bar 1 of application process \”FileZilla\””

my doWithTimeout(uiScript, timeoutSeconds)

— Site Manager…

delay 2.496001

set timeoutSeconds to 2.0

set uiScript to “click menu item \”Site Manager…\” of menu 1 of menu bar item \”File\” of menu bar 1 of application process \”FileZilla\””

my doWithTimeout(uiScript, timeoutSeconds)

— “Connect”ボタンをクリックします。

delay 2.167993

set timeoutSeconds to 2.0

set uiScript to “click UI Element \”Connect\” of window \”Site Manager\” of application process \”FileZilla\””

my doWithTimeout(uiScript, timeoutSeconds)

on doWithTimeout(uiScript, timeoutSeconds)

set endDate to (current date) + timeoutSeconds

repeat

try

run script “tell application \”System Events\”

” & uiScript & “

end tell”

exit repeat

on error errorMessage

if ((current date) > endDate) then

error “Can not ” & uiScript

end if

end try

end repeat

end doWithTimeout

コメントまでついている。