Safariで新しいプライベートウィンドウを開くためのAppleScriptの改善


1

このAppleScriptをスクリプトツールで使用するようにしました。クリックで起動するアプリケーションとして保存できます。セキュリティ編集ツールでも、アプリケーションを承認する必要があります。

メニュー項目をクリックしてプライベートブラウザを開きます。次に、ウィンドウメニューで考えられないURLを探すことで最初のウィンドウを閉じます。それは働いていますが、窓が開いたり閉じたりするので派手です。

何らかの方法でショートカットをクリックできるようにして、Safariウィンドウだけがプライベートモードで起動され、外観のような「マクロ」が表示されないようにすることで改善できると思います。あなたは私のためにこれを改善することができますか?

# Start or bring forward Safari window
tell application "Safari"
    activate
end tell

# Open a URL that cannot be found
set theURL to "http://localhost:38"
tell application "System Events"
    tell process "Safari"
        open location theURL
    end tell
end tell

# Launch a new private window
tell application "System Events"
    tell process "Safari"
        tell menu bar 1
            click menu bar item "File"
            tell menu "File"
                click menu item "New Private Window"
            end tell
        end tell
    end tell
end tell

# Close the first launcher window
tell application "System Events"
    tell process "Safari"
        tell menu bar 1
            click menu bar item "Window"
            tell menu "Window"
                click menu item "Failed to open page"
            end tell
        end tell
        tell menu bar 1
            click menu bar item "File"
            tell menu "File"
                click menu item "Close Window"
            end tell
        end tell
    end tell
end tell

なぜ最初にがらくたの場所を開く必要があるのですか?
Tetsujin

@哲人、私はそれがSafariが閉じられているかのようにそれをコーディングしていて、もちろんそれが開いたときにウィンドウを開いていて、おそらくそのウィンドウを開いてほしいと思うからです。 「ページを開くことができませんでした」という予測できる結果になる場所に設定することで、おそらくこれがそのウィンドウを閉じるための安全な方法であると感じます。とにかく私はそれをどう処理するかを示すために私の答えを編集しました。それがより良い/違う方法でそれをすることができる場所を見るならば、コメントしてください、ありがとう。
user3439894

@ user3439894 - いいえ、編集でさらに詳しく説明したと思います。
Tetsujin

ndasusers、私はあなたが私の答えを見たかどうかわかりません コード 私はあなたがあなたと一緒に達成しようとしていると信じていることを達成するために使用することを選択します コード だから、あなたは私の答えをもう一度見てみるべきだ。
user3439894

回答:


2

以下を試してください。

tell application "Safari"
    activate
    delay 0.5
end tell
tell application "System Events"
    open location "http://localhost:38"
    delay 0.5
    keystroke "w" using command down
    keystroke "n" using {shift down, command down}
end tell

今ここにあります コード Safariがすでに開いているかどうかを確認し、開いている場合は新しいプライベートウィンドウを開くだけです。そうでなければそれは私があなたが意図したと信じているように動作します、それは最初のウィンドウを閉じてから新しいプライベートウィンドウを開くことです。

on is_running(appName)
    tell application "System Events" to (name of processes) contains appName
end is_running

set isRunning to is_running("Safari")

if isRunning then
    tell application "Safari" to activate
    delay 0.5
    tell application "System Events" to keystroke "n" using {shift down, command down}
else
    tell application "Safari" to activate
    delay 1
    tell application "System Events"
        keystroke "w" using command down
        keystroke "n" using {shift down, command down}
    end tell
end if
  • 注意: の値 delay システムの速度に合わせて調整する必要があるかもしれません。コード化されたように、の現在値 delay 私のシステムではうまくいきます。値は またはその一部 小数 値。

ちなみに、私は新しいタブを開く必要はありません」 見つからないURL 「私がここで私の方法を信じるように、 コード 真上に、あなたが意図した目標を達成します Safariウィンドウが見た目のような「マクロ」をあまり使わずにプライベートモードで起動されていることを確認してください。 "


ちなみに、 コード あなたの質問では以下の例に減らすことができ、実際にあなたがそれを現在コーディングしている方法よりも少し速く走るでしょう。

tell application "Safari"
    activate
end tell
tell application "System Events"
    open location "http://localhost:38"
    click menu item "New Private Window" of menu "File" of menu bar 1 of process "Safari"
    click menu item "Failed to open page" of menu "Window" of menu bar 1 of process "Safari"
    click menu item "Close Window" of menu "File" of menu bar 1 of process "Safari"
end tell

しかし、この回答の一番上にある私の最初の(そして2番目の)例は、クリックイベントではなくキー押下を使用しているため、メニューが開いたり閉じたりしなくても直接動作します。あなたの凝縮した例も コード それだけです、私は適切にせずにそれを使用しないだろう delay 該当する場合は文。

最後に、私は2番目のブロックを使うことにします。 コード この答えに示されています。


0

私の問題 @ user3439894 上の答えは、Safariが最初に別のスペースで開いている場合は、現在のスペースではなく、それに切り替えて新しいウィンドウを開くことができるということです。だから私は使用します:

tell application "Safari"
    make new document
    activate
end tell
tell application "System Events"
    keystroke "n" using {shift down, command down}
    keystroke "`" using {command down}
    keystroke "w" using command down
end tell

少し遅くなるかもしれませんが、これはうまくいきます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.