AppleScript でダイアログがクリックできない!非同期で Shellを実行する方法

AppleScript で、Safariを開いた時に、モーダルでダイアログが出てくることがあった。

OKボタンをクリックするために、キーボードのエンターを送信するプログラムを書いたが、動かない。

なぜだろうと考えていたら、

ダイアログが消えた後に、エンターが送信された。

ダイアログが出ている間、AppleScriptは動いていなかった。

そのため、後からエンター送信を記述しても意味がなかった。

ひとつのスレッドで動いているから、このようになるので、

バッググラウンドで、別のコマンドを走らせるようにすれば、いいのではないかと考えた。

Shellで、非同期実行ができると知った。

やってみた。

dialog_click.scpt

do shell script "/bin/sh '【パス】/keybord_enter.sh' > /dev/null 2>&1 &"

最後に 【&】をつけると、うまくいった。

以下では、shellファイルの中で、applescriptを実行している。

keybord_enter.sh

osascript <<EOS
    delay 1
    tell application "Finder"
      tell application "System Events" to keystroke return
      beep
    end tell
    return
EOS

キーボードエンターの代わりに、「cliclick」コマンドを使えば、ダイアログで、マウスクリックもできると思う。