MavericksのAutomatorで”Applescriptを実行”で click at命令が実行不可に

MavericksのAutomatorで"Applescriptを実行”アクションに以下をいれ


on run {input, parameters}

set bounds of window 1 of application "Safari" to {0, 0, 1023, 747}

tell application "Safari" to activate

delay 0.5

tell application "System Events"

tell process "Safari"

click at {1, 1}

delay 0.5

end tell

end tell

end run


実行すると

”構文エラー

System Events でエラーが起きました:{800, 310} のタイプを list に変換できません。”

とでます。


ちなみにApplescript エディタでは

error "System Events でエラーが起きました:{1, 1} のタイプを list に変換できません。" number -1700 from {1, 1} to list

です。



10.6ではちゃんと動きますので、原因が良くわかりません。


触りだして数時間でいま気づいたけど、System Events.app自体がMavericksに無いから、動かないのかぁ?

10.9のシステム/ライブラリ/CoreService/System Events.appが探せない。

ちなみに、セキュティで上記をアプリ登録して、GUI Scriptingの許可はしてます。

#iPhotoも1500円出して買ったのに…Automatorの代用できるモノのスキル無いので、づっと10.6でいくかぁ。。

MacBook, Mac OS X (10.6.8), MC516J/A 増設RAM+2GB (Mid 2010)

投稿日 2013/11/09 05:06

返信
返信: 38

2013/11/20 04:15 Hiro__S への返信

click at バグのようですね。

さっそく、Apple にフィードバックしてみます。




Mavericks には ruby 1.8 系も入ってるようなので、自前の click at は下記でも大丈夫かもしれません。こちらの方が格段に速いと思います。

感覚的には、3〜4倍と抜群に早くなりました。

ありがとうございました。

2013/11/20 04:32 お子様ランチ. への返信

確認ありがとうございます。


おお、動きましたか。良かったです。ruby 1.8 系は若干古い (とはいえ、Mountain Lion の ruby も 1.8 系) ので、Mavericks の次の OS ではこのスクリプトが動かなくなるかもしれませんが、その頃には click at のバグも直ってることでしょう。

2014/05/16 18:17 お子様ランチ. への返信

お子様ランチ. 様、


度々、失礼致します。 AppleScriptのSafari辞書にある、do JavaScriptコマンドを使うことで、Webページ内のフォームを送信することができるようです。 Twitterの場合、web pageのソースを表示してフォームのidを調べると、 update-form となっていました。 アップルサポートコミュニティーのログイン画面のフォームのidは command となっていました。 これらのidと、document.getElementById()メソッドや、フォームのsubmit()メソッドを使って、click atと同様の効果が得られると思います。 


tell document 1 of application "Safari"


set theURL to "https://twitter.com/intent/tweet?source=webclient&text="

set theMessage to "test"

set theURL to theURL & theMessage


if (my openWithWait(theURL, 10)) then -- タイムアウト10

set theScript to "document.getElementById('update-form').submit()"


do JavaScripttheScript


-- do JavaScript theScript # どういう訳か、2回実行しなければならない場合もあるようです。

else

display dialog "Webページを読み込めません。"

end if

end tell



on openWithWait(theURL, timeoutSec)

tell document 1 of application "Safari"

set URL to theURL

delay 0.5

repeat timeoutSec times

delay 1

set theState to do JavaScript "document.readyState"

if theState is "complete" then return true

end repeat

return false

end tell

end openWithWait

2014/05/17 01:59 Hiro__S への返信

Hiro.S 様、有り難うございます。 重要な情報を見落としていました(お恥ずかしい)。ーー『document.readyState == "complete"だけで判断すると、 safariが前に表示していた documentをみていたりしてうまく動作しない時がある。 そこで一旦、about:blankを開き、documentのURLがabout: から http: になるのを待ってから、 document.readyStateをチェックするようにしている。』 これをちゃんと実行しなければなりませんでしたね。

2015/11/08 15:20 お子様ランチ. への返信

検索でヒットしてしまったので、自己レスです。


OS X El Capitanにしました(Yosemiteはテスト運用で挫折しました)

さて本題ですがclick atがワークフローとアプリケーション化で動くようになってました。


activate application "Finder"

tell application "System Events"

tell process "Finder"

click at {0, 0}

end tell

end tell





このスレッドはシステム、またはAppleコミュニティチームによってロックされました。 問題解決の参考になる情報であれば、どの投稿にでも投票いただけます。またコミュニティで他の回答を検索することもできます。

MavericksのAutomatorで”Applescriptを実行”で click at命令が実行不可に

Apple サポートコミュニティへようこそ
Apple ユーザ同士でお使いの製品について助け合うフォーラムです。Apple Account を使ってご参加ください。