6

アップルスクリプトを使用して、サファリで新しいウィンドウを開き、そのウィンドウで異なるURLの複数のタブを開くにはどうすればよいですか?

4

3 に答える 3

11

Safariで新しいウィンドウを作成する方法は、次のmake new documentコマンドを使用することです。

make new document at end of documents with properties {URL:the_url}

これにより、単一のタブが指す新しいウィンドウが作成され、the_urlそのウィンドウが最前面になります。これmake new window at end of windowsは機能せず、「AppleEventハンドラーが失敗しました」というエラーが発生するだけであることに注意してください。

同様に、ウィンドウ内に新しいタブを作成するにはw、次を使用できますmake new tab

make new tab at end of tabs of w with properties {URL:the_url}

wこれにより、タブのリストの最後にウィンドウに新しいタブが作成されます。このタブはを指しthe_url、現在のタブにはなりません。明示的に言う代わりに、ブロックtabs of wを使用することもできます。tell w

tell w
    make new tab at end of tabs with properties {URL:the_url}
end tell

そのように、tabs暗黙的にを参照しtabs of wます。

これをすべてまとめると、次のスクリプトが得られます。のURLのリストを指定するthe_urlsと、すべてのURLが新しいウィンドウで開きます。空の場合the_urls、空白のタブでウィンドウが開きます。

property the_urls : {¬
    "http://stackoverflow.com", ¬
    "http://tex.stackexchange.com", ¬
    "http://apple.stackexchange.com"}

tell application "Safari"
    if the_urls = {} then
        -- If you don't want to open a new window for an empty list, replace the
        -- following line with just "return"
        set {first_url, rest_urls} to {"", {}}
    else
        -- `item 1 of ...` gets the first item of a list, `rest of ...` gets
        -- everything after the first item of a list.  We treat the two
        -- differently because the first item must be placed in a new window, but
        -- everything else must be placed in a new tab.
        set {first_url, rest_urls} to {item 1 of the_urls, rest of the_urls}
    end if

    make new document at end of documents with properties {URL:first_url}
    tell window 1
        repeat with the_url in rest_urls
            make new tab at end of tabs with properties {URL:the_url}
        end repeat
    end tell
end tell
于 2012-07-29T10:30:37.290 に答える
1
tell application "Safari"
  activate
  set the URL of document 1 to "http://www.XXXXXXX.com"
  my new_tab()
  set the URL of document 1 to "http://www.XXXXXX.com"
end tell
on new_tab()
  tell application "Safari" to activate
  tell application "System Events"
    tell process "Safari"
      «event prcsclic» «class menI» "New Tab" of «class menE» "File" of «class mbar» 1
    end tell
  end tell
end new_tab

Xを任意のサイトに置き換え、開きたいページごとにコード(my new_tab()とURL ...行を設定)を繰り返します。このページを参照してください。 これがあなたが話していたものではない場合は、私を訂正してください。

于 2012-07-29T03:11:38.923 に答える
0

Pugmattの答えに基づいて、私は次のことを実行しました...

on run {input, parameters}
  tell application "Safari"
  activate
    make new document with properties {URL:"http://www.apple.com"}
    my new_tab()
    set the URL of document 1 to "http://www.example.com"
  end tell
end run
on new_tab()
  tell application "Safari" to activate
  tell application "System Events"
    tell process "Safari"
      «event prcsclic» «class menI» "New Tab" of «class menE» "File" of «class mbar» 1
    end tell
  end tell
end new_tab

これがあなたにとって最も効率的な方法かどうかはわかりません。

于 2012-07-29T06:42:14.880 に答える