はじめに
今回は、クリックで変えられない値を変える方法
tableのrowや、combo box ではクリックで値を変更できない
いまのところ、この二つで click で値を変えることができず、けっこうどはまった。。。
combo box に関しては、暫定的な変え方をメモっておく
tableのrowはselectで選択する
まぁ・・・あまりtable要素を見ないが、Excelに要素があったので、それを選択するスクリプトを貼り付けておく。
tell application "Microsoft Excel"
activate
end tell
tell application "System Events"
tell process "Microsoft Excel"
tell window "Web オプション"
tell tab group 1
tell scroll area 1
tell table 1
select row 3
end tell
end tell
end tell
end tell
end tell
end tell
button要素は、クリックで変えられるが、rowはクリックしても選択状態にならないので、selectを使う。それだけの話。
悪魔の combo box の値
テキストエディットのフォントサイズの指定欄。要素を調べていくと、combo box というのに行き当たる。んでもって、list 1 of scroll area 1 にクリックした際に出てくる数字のリストがでてくるのがわかる。試しに、select text field 1 したら選択されたので、これか〜と思ったら、実際の数値が変わっていないこと気付く。
tell application "TextEdit"
activate
end tell
tell application "System Events"
tell process "TextEdit"
tell window "名称未設定"
tell combo box 1 of group 1
click button 1
tell list 1 of scroll area 1
select text field 1
end tell
end tell
end tell
end tell
end tell
試しに、選択状態で、エンターキー(key code 36)を走らせるが、やはり変わっていない。実際に自分で変えるときはマウスカーソルを合わせてクリックすると変わる。ならば、click text field でかわるのだろうか、と試したが、変わらない。
いろいろと試したのだけれども、うまく変わらないので、暫定的にframeworkを使うことで無理やり値を変えた。
use framework "Foundation"
tell application "TextEdit"
activate
end tell
tell application "System Events"
tell process "TextEdit"
tell window "名称未設定"
tell combo box 1 of group 1
click button 1
end tell
end tell
end tell
end tell
my clickAction(x軸値, y軸値)
on clickAction(clickX, clickY)
set pt to {x:clickX, y:clickY}
tell current application
CGPostMouseEvent(pt, 1, 1, 1)
CGPostMouseEvent(pt, 1, 1, 0)
end tell
end clickAction
on doubleClickAction(clickX, clickY)
my clickAction(clickX, clickY)
delay 0.1
my clickAction(clickX, clickY)
end doubleClickAction
一応、10.15でもこのやり方で動くから、これでなんとかいけるが、座標を計算しないといけないし、決め打ちにしづらいのが難点。selectでなんとかいけないものか・・・