はじめに

今回は、クリックで変えられない値を変える方法

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でなんとかいけないものか・・・