Matriz de aplicaciones de Applescript

Tengo un script que vuelve a cargar la pestaña activa de un navegador abierto, pero quiero que funcione con todos los navegadores abiertos. ¿Hay alguna manera de hacer una lista/matriz y usarla en este código?

Este código funciona con un solo navegador:

if application "Safari" is running then
    tell application "Safari"
        activate
    end tell
    tell application "System Events"
        tell process "Safari"
            keystroke "r" using {command down}
        end tell
    end tell
end if

Intenté crear una matriz/lista, pero creo que esta no es la forma porque no funciona:

set browsers to {"Google Chrome", "Firefox", "Opera", "Safari"}

Respuestas (1)

Por lo general, no puede sustituir una lista por una cadena y hacer que las cosas funcionen sin algunos otros cambios.

Una buena manera de evitar esto es utilizar un repeat with variable in listenfoque. Esto le permite revisar cada elemento de una lista y ejecutar su código con cada elemento de la lista individualmente.
He aquí cómo aplicar eso a su código:

set browsers to {"Google Chrome", "Firefox", "Opera", "Safari"}

repeat with browser in browsers
    if application browser is running then
        tell application browser
            activate
        end tell
        tell application "System Events"
            tell process browser
                keystroke "r" using {command down}
            end tell
        end tell
    end if
end repeat

Todo es igual excepto que su código está envuelto en un repeat withbloque y el "Safari"literal se reemplaza con browser, una referencia al navegador actual en la lista de navegadores (el código se ejecutará una vez para cada navegador en la lista).

¡Aaaaaah! repetir eso es todo. Gracias. Probé array/list pero no sabía cómo hacer un bucle. Mi búsqueda perezosa no lo encontró.