It asks for a search term, which it matches against the name (title) of every open tab, as well as the URL. If it finds one match, it raises that window to the top and switches to that tab. If it finds multiple matches, it offers you a list of matches that you can select from.
set question to display dialog ("Find Safari tab:") default answer ""
set searchpat to text returned of question
tell application "Safari"
set winlist to every window
set winmatchlist to {}
set tabmatchlist to {}
set tabnamematchlist to {}
repeat with win in winlist
set ok to true
try
set tablist to every tab of win
on error errmsg
--display dialog name of win as string
set ok to false
end try
if ok then
repeat with t in tablist
if searchpat is in (name of t as string) then
set end of winmatchlist to win
set end of tabmatchlist to t
set end of tabnamematchlist to (id of win as string) & "." & (index of t as string) & ". " & (name of t as string)
--display dialog name of t as string
else if searchpat is in (URL of t as string) then
set end of winmatchlist to win
set end of tabmatchlist to t
set end of tabnamematchlist to (id of win as string) & "." & (index of t as string) & ". " & (name of t as string)
--display dialog name of t as string
end if
end repeat
end if
end repeat
if (count of tabmatchlist) = 1 then
--display dialog "one!"
set w to item 1 of winmatchlist
set t to item 1 of tabmatchlist
set current tab of w to t
set index of w to 1
else if (count of tabmatchlist) = 0 then
display dialog "No matches"
else
set whichtab to choose from list of tabnamematchlist with prompt "The following tabs match, please select one:"
set AppleScript's text item delimiters to "."
if whichtab is not equal to false then
set tmp to text items of (whichtab as string)
set w to (item 1 of tmp) as integer
set t to (item 2 of tmp) as integer
set current tab of window id w to tab t of window id w
set index of window id w to 1
end if
end if
end tell
To set this up, look in Applications, then Utilities, and run "AppleScript Editor". Cut and paste the program above into a new window there and save it as "Find Safari Tab" (or whatever name you like), and place it in your home directory, under Library/Scripts. Then in the AppleScript Editor Preferences, check the box "Show Script menu in menu bar (I also uncheck "Show Computer scripts", which would show lots of system scripts you might not want). You'll get a script menu in your menubar with your new script in it. Just select it to run it.
This script has a younger brother which does roughly the same thing for Terminal windows and tabs: Find Terminal Sessions.
And if you're wondering how I converted the AppleScript Editor formatted program into HTML, I also do that with software. I can convert any copied text that has formatting into HTML.
9 comments:
At 2017/05/09 11:27 Bob wrote:
|
What a great idea - been wanting to do something like this for a very long time. YEARS!!!
I then used this to create a service which allows a keyboard shortcut to be assigned to it and now anytime I need I just type in the shortcut and enter a string and get a list of Safari tabs that I can select from and bam - I'm where I wanted to be. So handy and so easy to use.
Thanks so much - you made my time in Safari so much more enjoyable.
|
At 2017/08/30 18:59 wrote:
|
Thanks, this is great (for a tab sprawler like me)! I combined it with Safari>Debug>Miscellaneous flags>Show web process IDs in page titles. Now I can also easily remedy PIDs that Activity Monitor identifies as not responding. OSX 10.11.6 (15G1611), Safari 11.0 (11604.1.38.1.3)
|
At 2017/09/26 10:05 Xiang wrote:
|
This is a very important feature that Safari has been missing. Vim-emulation plugins for other browsers all allow searching through tabs with just one single key, e.g. Vimperator or cVim. If there could be a shortcut set to invoke this, it would be even better. Seems that one can indeed assign a shortcut to launch Applescript as described at for example here: https://apple.stackexchange.com/questions/175215/how-do-i-assign-a-keyboard-shortcut-to-an-applescript-i-wrote
|
At 2018/05/15 12:46 Don J J Carroll wrote:
|
Tuesday, May 15, 2018, 1:33 PM
I have a question about this script. What I am looking for is a way to search tabs in several open Safari (MacOS) windows, not just one window that has several tabs, but multiple window each with multiple tabs. Will this script do what I am looking for? If not, are there other alternatives for me to pursue?
I have tried to copy this script into my Mac OS 10.12.6 Sierra Utilities folder "Script Editor" and it won't allow me. When I open the Script Editor I get a blank dialog box and I can't even type anything into that space.
Here's hoping you knowledgeable folks can help a computer Mac novice! Don J J Carroll
|
At 2018/05/15 15:50 wrote:
|
Hi, Yes it should search all tabs on all open windows. Try opening the Script Editor Application in /Applications/Utilities, create a new script, and paste the program into the new script window.
|
At 2018/08/22 2:11 Wayne wrote:
|
I installed this a few months ago and it was working well - until recently. After launching it from the menu bar it would prompt for the search term but then *poof* - nada/rien/nihil.
Running it from Script Editor revealed that a number of items were returning missing value - quite a few like this: get URL of tab 5 of window id 198 --> missing valueand then also this: get every tab of window id 804 --> missing valueand the resulting untrapped error was killing the script: count missing value --> error number -1700 from missing value to specifierSo to stop it from bombing I've had to wrap the innards of the scan loop in try/end try: if ok then try repeat with t in tablist try ... end try end repeat end try end ifI can only surmise that this situation is perhaps the result of an embarrassingly large number of Safari windows/tabs, open for an extended period of time. Thanks very much for publishing your script. While it isn't quite the "Tab Organiser" for Chrome that I'm hoping to one day have it is nonetheless a very useful alternative.
|
At 2018/09/04 11:17 Demitri wrote:
|
Would you be willing to put your script as an answer here? https://stackoverflow.com/questions/30242098/applescript-find-open-tab-in-safari-by-name-and-open-it#30242514 I didn't want to take the liberty of copying your code, but sometimes (when I'm on a new computer) my search engine brings me to that page. Your script is the best solution I've found and I use it all the time!
|
At 2018/09/04 12:28 wrote:
|
Feel free to put either a link to my code, or a copy of the code there. A link is probably better as it will lead people to any corrections or enhancements that get posted here.
|
At 2019/04/24 10:28 MacsSince87 wrote:
|
2019-04 Working great in Mojave with mods (1) to ignore spurious windows and (2) to add window activation workaround. Posted a link to this page and the updated code at: "Stackoverflow 30242098"
|
More Mac OS X Stuff
Fine's Home |
|
Send Me Email |