Safari でタブを閉じるための非常に単純な AppleScript を作成しました。問題は、それが機能することですが、完全ではありません。いくつかのタブだけが閉じられています。コードは次のとおりです。
tell application "Safari"
repeat with aWindow in windows
repeat with aTab in tabs of aWindow
if [some condition is encountered] then
aTab close
end if
end repeat
end repeat
end tell
私もこのスクリプトを試しました:
tell application "Safari"
repeat with i from 0 to the number of items in windows
set aWindow to item i of windows
repeat with j from 0 to the number of tabs in aWindow
set aTab to item j of tabs of aWindow
if [some condition is encountered] then
aTab close
end if
end repeat
end repeat
end tell
...しかし、どちらも機能しません(同じ動作)。
私は自分のシステム (MacBook Pro 2008 年 1 月) と、Tiger の下の Mac Pro G5 でそれを試してみましたが、Tiger では説明的なエラーははるかに少ないものの、スクリプトは両方で失敗します。
スクリプトを数回実行すると、タブがなくなるまで毎回いくつかのタブが閉じられますが、いくつかのタブを閉じた後は常に同じエラーで失敗します。Leopard では、範囲外のエラーが発生します。私は高速列挙を使用しているため(「ウィンドウ内のアイテムの数を 0 から数まで繰り返す」を使用していません)、これで境界外エラーを取得する方法がわかりません...
私の目標は、Cocoa Scripting Bridge を使用して、Objective-C Cocoa アプリケーションから Safari のタブを閉じることですが、Scripting Bridge は同じように失敗します。削除できないタブは Xcode デバッガーのように表示さNULL
れますが、他のタブは値 (タイトルなど) を取得できる有効なオブジェクトです。実際、私は最初に Scripting Bridge を試してから、これを AppleScript で直接試してはどうかと自分に言い聞かせましたが、同じ結果が得られて驚きました。
そこに明らかな省略か何かがあるに違いありません...(私にはSafari AppleScriptサポートのバグのように思えます... :S)私は繰り返しループとObj-C 2.0高速列挙を使用して、コレクションをゼロで反復処理しました問題があるので、ここで何が問題なのかわかりません。
誰でも助けることができますか?
前もって感謝します!