AppleScript per trovare una scheda con il suo nome in Google Chrome

3

Ho dimenticato come trovare una scheda con il suo nome e restituire il valore (ad esempio la scheda 2) e infine impostare la scheda anche come scheda attiva.

Ho provato quanto segue, ma non funziona:

set titleString to "
"

tell application "Google Chrome"
    set window_list to every window # get the windows

    repeat with the_window in window_list # for every window
        set tab_list to every tab in the_window # get the tabs

        repeat with the_tab in tab_list # for every tab
            set the_title to the title of the_tab # grab the title
            if the_tab contains (Name to search" as text) then
                display notification "the_tab"
            end if
             return # concatenate
        end repeat
    end repeat
end tell

Ho anche provato ad avviare qualcosa con JavaScript:

tell application "Google Chrome"
    set window_list to every window
    repeat with the_window in window_list
        set tab_list to every tab in the_window
        tell tab_list to set TheTab to execute javascript "document.title"
    end repeat
end tell

Ma poi ho:

{«class CrTb» id 4 of window id 1 of application "Google Chrome", «class CrTb» id 9 of window id 1 of application "Google Chrome", «class CrTb» id 2 of window id 1 of application "Google Chrome", «class CrTb» id 189 of window id 1 of application "Google Chrome"} doesn’t understand the “execute” message.

Come posso procedere?

    
posta Kevin 22.02.2017 - 08:43
fonte

1 risposta

2

Non essendo sicuro della portata totale di ciò che stai cercando di ottenere, il codice seguente potrebbe essere più necessario. Tuttavia, consente di cercare il nome della scheda e quindi imposta la scheda contenente la stringa di ricerca come active tab .

Il codice sotto è una rielaborazione del codice presentato in Trova le schede di Safari con AppleScript . Sarebbe stato bello poter cambiare tell application "Safari" in tell application "Google Chrome" e lo script ha funzionato, ma a causa delle differenze nelle proprietà di una Tab tra due app, questo è il motivo per cui non funzionerebbe.

Che cosa questo script fa:

  • Visualizza una finestra di dialogo in cui digiti cosa cercare all'interno dei nomi delle schede.
  • Se la stringa di ricerca è abbinata solo in una scheda, quella scheda è impostata su active tab index , il che significa che Tab è ora la scheda corrente. Se c'è più di una finestra, la finestra contenente quella Scheda viene visualizzata in primo piano rispetto a tutte le altre finestre di Google Chrome.
  • Se la stringa di ricerca esegue più corrispondenze, viene presentata una finestra di dialogo di selezione tra cui scegliere, quindi quella Tab è impostata su active tab index , il che significa che Tab ora è la scheda corrente. Se c'è più di una finestra, la finestra contenente quella Scheda viene visualizzata in primo piano rispetto a tutte le altre finestre di Google Chrome.
  • Se la stringa di ricerca non corrisponde, viene visualizzata una finestra di dialogo "Nessuna corrispondenza trovata!" viene visualizzato.
set searchString to text returned of (display dialog "Enter a string to search for:" default answer "" with title "Find Google Chrome Tab")

tell application "Google Chrome"
    set win_List to every window
    set win_MatchList to {}
    set tab_MatchList to {}
    set tab_NameMatchList to {}
    repeat with win in win_List
        set tab_list to every tab of win
        repeat with t in tab_list
            if searchString is in (title of t as string) then
                set end of win_MatchList to win
                set end of tab_MatchList to t
                set end of tab_NameMatchList to (id of win as string) & ".  " & (title of t as string)
            end if
        end repeat
    end repeat
    if (count of tab_MatchList) is equal to 1 then
        set w to item 1 of win_MatchList
        set index of w to 1
        my setActiveTabIndex(t, searchString)
    else if (count of tab_MatchList) is equal to 0 then
        display dialog "No match was found!" buttons {"OK"} default button 1
    else
        set which_Tab to choose from list of tab_NameMatchList with prompt "The following Tabs matched, please select one:"
        if which_Tab is not equal to false then
            set oldDelims to (get AppleScript's text item delimiters)
            set AppleScript's text item delimiters to "."
            set tmp to text items of (which_Tab as string)
            set w to (item 1 of tmp) as integer
            set AppleScript's text item delimiters to oldDelims
            set index of window id w to 1
            my setActiveTabIndex(t, searchString)
        end if
    end if
end tell

on setActiveTabIndex(t, searchString)
    tell application "Google Chrome"
        set i to 0
        repeat with t in tabs of front window
            set i to i + 1
            if title of t contains searchString then
                set active tab index of front window to i
                return
            end if
        end repeat
    end tell
end setActiveTabIndex
    
risposta data 24.02.2017 - 10:48
fonte

Leggi altre domande sui tag