Applescript: Abra la pestaña Safari actual en Chrome (Solución de problemas de la secuencia de comandos de trabajo)

4

Entonces, hace un tiempo decidí ejecutar una instalación de Safari sin Flash. Ha sido realmente genial, Safari parece mucho más estable en general y apenas lo echo de menos.

Pero de vez en cuando me encuentro con un sitio que requiere flash (en su mayoría, videos de YouTube, lo que pensé que no sería un problema dado que se suponía que Google estaba cambiando todo a HTML5), así que para esos casos tiene un Appescript que se ejecuta cuando se activa a través de un flujo de trabajo Alfred (con una tecla de acceso directo). El guión es como tal:

tell application "Safari"

    set theURL to URL of current tab of window 1

end tell

tell application "Google Chrome"

    if windows ≠ {} then
        make new tab at the end of window 1 with properties {URL:theURL}
    else
        make new window
        set URL of active tab to theURL
    end if
    activate

end tell

tell application "Safari"

    close current tab of window 1

end tell

Esto generalmente funciona perfectamente, pero me encuentro con un problema extraño cada vez que Chrome no tiene una ventana abierta en segundo plano. En estos casos, Chrome abrirá una nueva ventana (en blanco) y la secuencia de comandos se detendrá allí. La tercera declaración de Tell,

 tell application "Safari"

    close current tab of window 1

end tell

Nunca se ejecutará, dejándome con una ventana de cromo abierta y también una ventana de safari abierta. Solo cuando presiona la tecla de acceso rápido por segunda vez, después de que la ventana de Chrome ya está abierta, el Script ejecutará su curso y abrirá la página en chrome / cerrar la pestaña en safari.

¿Alguna idea? Estoy realmente confundido por el hecho de que la tercera declaración de tell no se ejecutará en absoluto. Si la ventana de Chrome se abrió en blanco, pero la pestaña del safari aún se cerró, supongo que fue un simple error en la declaración if / else, pero el hecho de que el script parezca terminar realmente me está impidiendo.

    
pregunta Carlos 09.02.2014 - 15:17

2 respuestas

2

El hecho de que Safari y Chrome se estén ejecutando, no significa que tengan una ventana abierta. Puede probar las ventanas abiertas como indica Mark o simplemente emitir el comando de reapertura que abre una nueva ventana si no existe una.

tell application "Google Chrome"
    if not (exists window 1) then reopen
    -- insert your code 
end tell

tell application "Safari"
    if not (exists document 1) then reopen
    -- insert your code 
end tell

EDIT

tell application "Safari"
    if not (exists document 1) then return
    set theURL to URL of current tab of window 1
    close current tab of window 1
end tell

tell application "Google Chrome"
    if not (exists window 1) then reopen
    set URL of active tab of window 1 to theURL
end tell
    
respondido por el adayzdone 09.02.2014 - 16:12
0

Es posible que Alfred te esté protegiendo de un error que se produce si Chrome se está ejecutando pero no tiene ninguna ventana abierta.

  

Google Chrome recibió un error: no se puede establecer la pestaña activa en   "http .....".

Cambia las líneas

  make new window
  set URL of active tab to theURL

a

set theWindow to make new window

set URL of active tab of theWindow to theURL
    
respondido por el markhunte 09.02.2014 - 16:02

Lea otras preguntas en las etiquetas