web-dev-qa-db-ja.com

AppleScriptを使用して新しいSafariタブでURLを開く

AppleScriptを使用して、Safariの新しいタブでリンクを開くことはできますか?

32
Mark Szymanski

これは動作します:

tell application "Safari"
    tell window 1
        set current tab to (make new tab with properties {URL:"http://www.stackoverflow.com"})
    end tell
end tell
37
Tim Lewis

私はこれもあなたが要求したことを行うと思いますが、それははるかに短く、ブラウザ固有ではありません:

do Shell script "open http://www.webpagehere.com"

これにより、指定したURLがデフォルトのブラウザーで開きます。 Safariで明示的に開きたい場合は、これを使用します。

do Shell script "open -a Safari 'http://www.webpagehere.com'"
22
rien333

これは通常、新しいタブを作成してフォーカスする必要があります(または、URLが既に開いている場合は既存のタブにフォーカスします)。

tell application "Safari"
    open location "http://stackoverflow.com"
    activate
end tell

「ウィンドウの代わりにタブでページを開く」が設定されていない場合、新しいウィンドウが開きます。

tell application "System Events" to open locationは、非ASCII文字を含む一部のURLでは機能しません。

set u to "http://ja.wikipedia.org/wiki/漢字"
tell application "System Events" to open location u
--tell application "Safari" to open location u
--do Shell script "open " & quoted form of u

これにより、新しいページがウィンドウで開くように設定されている場合でも、新しいタブが開きます。

tell application "Safari"
    activate
    reopen
    tell (window 1 where (its document is not missing value))
        if name of its document is not "Untitled" then set current tab to (make new tab)
        set index to 1
    end tell
    set URL of document 1 to "http://stackoverflow.com"
end tell
tell application "System Events" to tell process "Safari"
    perform action "AXRaise" of window 1
end tell

set index to 1はウィンドウを上げませんが、ウィンドウをwindow 1システムイベント。AXRaiseできます。

8
Lri

次のスクリプトを使用して、数百のドキュメントを単一のウィンドウのタブに開きました。

tell application "Safari"
    tell window 1
        make new tab with properties {URL:"http://foo.com/bar"}
        make new tab with properties {URL:"http://foo.com/baz"}
    end tell
end tell

ただし、LionのSafari 5.1では動作しません。新しいタブが開きますが、プロパティglobで提供されているURLは読み込まれません。私はそれを次のように変更しましたが、今は動作します:

tell application "Safari"
    tell window 1
        set URL of (make new tab) to "http://foo.com/bar"
        set make new tab to "http://foo.com/baz"
    end tell
end tell
4
Pascal

コード:

tell application "System Events"
tell application "Safari" to activate
tell process "Safari"
click menu item "New Tab" of menu "File" of menu bar 1
end tell
end tell

tell application "Safari"
set URL of document 1 to "http://www.stackoverflow.com/"
end tell

1つの問題は、システムの言語が英語に設定されている場合にのみ機能することです。

3
user142019

新しい回答がここに投稿されてからしばらく経ちました。これが最適な方法だと思います。 Safariが開いていない場合は開き、開いているウィンドウがない場合は新しいウィンドウを作成し、現在の(または新しく作成された)ウィンドウにタブを追加します。

tell application "Safari"
    activate
    try
        tell window 1 to set current tab to make new tab with properties {URL:theURL}
    on error
        open location theURL
    end try
end tell
2
BallpointBen

私はこれを行うためにオートマトンを使用することになりました。

0
Laddy

コメントすることはできません:-/だから、私は(上記の)ティムの答えがOS X 10.8.5の時点で機能すると言って答えます。彼のスクリプトのこの1行バージョンも機能します。

tell window 1 of application "Safari" to set current tab to (make new tab with properties {URL:"http://www.stackoverflow.com"})

配列-1行がオーバーフローしています。ここでは、コードタグがありません。

アプリケーション「Safari」のウィンドウ1に、現在のタブを設定するように指示します(プロパティ{URL: " http://www.stackoverflow.com "}で新しいタブを作成します)

0
Geoff Canyon

Safariでバックグラウンドで新しいタブを開く方法を見つけました。

tell application "Safari"

set the URL of (make new tab in window 1) to "your.url.net"

end tell

この答えを書いている間、私はこれを作りました

tell application "Safari"

try

    display dialog "Website URL" default answer "" buttons {"OK", "Annuler"} default button 1

    set theURL to text returned of result

    set netProto to "https://"

    if theURL contains netProto then

        set the URL of (make new tab in window 1) to theURL

    else

        set the URL of (make new tab in window 1) to netProto & theURL

    end if

end try

end tell

新しいバージョン

tell application "Safari"

repeat

    try

        display dialog "Website URL" default answer "" buttons {"OK", "Annuler"} default button 1

        set theURL to text returned of result

        if theURL is "" then exit repeat

        set netProto to "https://"

        if theURL contains netProto then

            set the URL of (make new tab in window 1) to theURL

        else

            set the URL of (make new tab in window 1) to netProto & theURL

        end if

        display dialog "Do you want to open a new tab?" buttons {"Yes", "No"} default button "Yes"

        if button returned of result is "No" then exit repeat

    end try

end repeat

end tell

どんな提案でも大歓迎です

宜しくお願いします

0
BK201 Freelance

次のアプローチを試すことができます:

//make Safari window active and topmost
tell application "Safari" to activate
//start communication with Safari
tell application "Safari"
    tell window 1
        //create new tab and open specified URL
        tab with properties {URL:"https://url.com"})
        //make tab active
        set visible to true
    end tell
end tell

また、Apple script in FastScript (10個のショートカットで無料)の使用を組み合わせることができます

スクリプトを追加するには、/Library/Scriptsにスクリプトを保存するだけです。新しいスクリプトのショートカットを設定できるようになります。

新しいタブよりも新しいウィンドウを開きたい場合、uは次に再生できます:

tell application "System Events"
    tell process "Safari"
        click menu item "New window" of menu "File" of menu bar 1
    end tell
end tell

注:この場合、AppleScriptがセキュリティ設定でspecialCapabilitiesを使用できるようにする必要があります。

0
gbk

Safari v.11で私のために働いた

tell application "Safari"
    tell window 1
        make new tab with properties {URL:"https://Twitter.com"}
    end tell
end tell
0
Mudlabs

最短の解決策ではありませんが、英語でもだけでなく、うまくいきます...

tell application "Safari"
    activate
end tell

tell application "System Events"
    set frontmost of process "Safari" to true
    keystroke "t" using {command down}
end tell

set myURL to "anyurl.html"
delay 2
tell application "Safari" to set the URL of the front document to myURL
0
Chris Eneman