アプリにスクリプトインターフェイスがある場合は、もちろんそれを行うのが最善の方法です。
通常、AppleScriptで反復するのではなく、クエリのすべての結果を操作する必要があります。
たとえば、「標準スイート」を実装するほとんどすべてのアプリケーションでは、次のことができます。
tell app "TextEdit" to close windows
これは、次の場合よりもはるかに簡単です(そして、より高速で、ターゲットアプリに正しく実装される可能性が高くなります)。
tell app "TextEdit"
repeat with theWindow in windows
close theWindow
end repeat
end tell
もちろん、これにより、変更の保存/破棄ダイアログがポップアップ表示される場合があります。また、アプリケーションのユーザーモデルによっては、ダイアログやインスペクターなどがスキップまたは含まれる場合があります。
さらに重要なことに、アプリがスクリプト(および標準スイート)をサポートしていない場合は機能しません。
また、クラッシュレポートを閉じることにはまったく役立ちません。そのウィンドウは、元のアプリケーションではなくCrashReporterによって所有されます(これは、元のアプリケーションと通信できなくなったため、元のアプリケーションと通信できなくなったため、良いことです… )。
別の方法は、システムイベントのUIスクリプト機能です。これは、補助アクセスが有効になっている場合にのみ機能します。また、どのウィンドウを処理したいのか、どのコントロールが必要なのかを判断するのは少し面倒です。
例えば:
tell app "System Events"
click button 1 of windows of application process "TextEdit"
end tell
これは、テキストエディットプロセスが所有するすべてのウィンドウ(種類に関係なく)を検索し、そのウィンドウの最初のボタン(赤い閉じるボタン)のクリックをシミュレートすることで機能します。
「AppleScriptUIスクリプティング」をグーグルで検索すると、さまざまなガイドが見つかるはずです。私が最初に見つけたヒットはhttp://www.makeuseof.com/tag/applescripts-ui-scripting-mac/で、開始するのに適切な場所のようです。