AppleScript para encontrar una pestaña por su nombre en Google Chrome

3

He olvidado cómo encontrar una pestaña por su nombre y devolver el valor (por ejemplo, la pestaña 2) y, finalmente, establecer la pestaña como la pestaña activa también.

He intentado lo siguiente, pero no funciona:

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

También intenté comenzar algo 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

Pero luego me sale:

  

{«clase CrTb» id 4 de la ventana id 1 de la aplicación "Google Chrome",   «Clase CrTb» id 9 de la ventana id 1 de la aplicación "Google Chrome",   «Clase CrTb» id 2 de la ventana id 1 de la aplicación "Google Chrome",   «Clase CrTb» id 189 de la ventana id 1 de la aplicación "Google Chrome"}   no entiende el mensaje de "ejecutar".

¿Cómo puedo proceder?

    
pregunta Kevin 22.02.2017 - 08:43

1 respuesta

2

No está seguro del alcance total de lo que está tratando de lograr, el siguiente código puede ser más de lo que necesitaba. Sin embargo, permite buscar el nombre de la pestaña y luego establece la pestaña que contiene la cadena de búsqueda como active tab .

El código a continuación es una modificación del código presentado en Encuentre las pestañas de Safari con AppleScript . Hubiera sido bueno poder cambiar de tell application "Safari" a tell application "Google Chrome" y el script funcionó, pero debido a las diferencias en las propiedades de una pestaña entre las Dos aplicaciones, por eso no funcionaría.

Lo que hace este script :

  • Muestra un cuadro de diálogo en el que escribe qué buscar dentro de los Nombres de las pestañas.
  • Si la cadena de búsqueda coincide solo en una pestaña, esa pestaña se establece en active tab index , lo que significa que la pestaña ahora es la pestaña actual. Si hay más de una ventana, la ventana que contiene esa pestaña se coloca al frente de todas las demás ventanas de Google Chrome.
  • Si la cadena de búsqueda hace varias coincidencias, entonces se presenta un diálogo de lista para elegir, entonces esa pestaña se establece en active tab index , lo que significa que la pestaña ahora es la pestaña actual. Si hay más de una ventana, la ventana que contiene esa pestaña se coloca al frente de todas las demás ventanas de Google Chrome.
  • Si la cadena de búsqueda no coincide, aparecerá un cuadro de diálogo que indica "¡No se encontró ninguna coincidencia!" se muestra.
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
    
respondido por el user3439894 24.02.2017 - 10:48

Lea otras preguntas en las etiquetas