1 votos

¿Cómo abrir una URL fija + lo que hay en el portapapeles a través de un script y vincularlo a un acceso directo?

¿Este script de Apple funcionará?

Dile a la aplicación "Safari" que abra la ubicación
"http://www.site.com/"
end tell

Dile al proceso "Safari"
   Pulsa la tecla "l" con la tecla comando presionada

Dile a la aplicación "System Events" que pulse el código de tecla
124 con la tecla comando presionada

Dile al proceso "Safari"
   Pulsa la tecla "v" con la tecla comando presionada
   Pulsa la tecla de retorno
end tell

0 votos

¿Lo has ejecutado? ¿Has recibido un error? ¿Hizo algo?

0 votos

No tengo un mac en realidad. He escrito muchos scripts de powershell y solo estaba tratando de ayudar a un amigo escribiendo un script de applescript. Se ve bien, pero estaba buscando validación de alguien más de que debería funcionar como se pretende.

0 votos

@Ryan hay algunos errores de sintaxis. Por favor, consulta otros hilos para ver cómo arreglarlo. Luego me avisas, puedo probarlo. Esto también me resulta útil. apple.stackexchange.com/questions/tagged/applescript apple.stackexchange.com/questions/363521/…

2voto

user3439894 Puntos 5883

El siguiente ejemplo de AppleScript código hará lo que solicitaste:

set the clipboard to "questions/392514/i-want-to-write-a-script-to-open-a-fixed-url-whats-in-the-clipboard-ex-open"

set myURL to "https://apple.stackexchange.com/" & (the clipboard)

tell application "Safari" to ¬
    tell its first window to ¬
        set its current tab to ¬
            (make new tab with properties {URL:myURL})

Si ejecutas el ejemplo de AppleScript código, tal como está, se abrirá en tu pregunta.

La primera línea de código es solo para propósitos de prueba al igual que la parte "https://apple.stackexchange.com/" de myURL. Cámbialo por lo que desees y comenta o elimina la primera línea para usarlo normalmente.

Para incorporar algo más robusto que tenga en cuenta el estado actual de Safari, el siguiente ejemplo de AppleScript código maneja los diferentes escenarios típicos:

set the clipboard to "questions/392514/i-want-to-write-a-script-to-open-a-fixed-url-whats-in-the-clipboard-ex-open"

set myURL to "https://apple.stackexchange.com/" & (the clipboard)

tell application "Safari"
    activate
    if (count documents) is equal to 0 then
        make new document
        repeat until exists its first window
            delay 0.01
        end repeat
        set URL of its current tab of its first window to myURL
    else
        set firstTabURL to URL of its first tab of its first window
        if {"favorites://", "topsites://", missing value} contains firstTabURL then
            set URL of its current tab of its first window to myURL
        else
            tell its first window to ¬
                set its current tab to ¬
                    (make new tab with properties {URL:myURL})
        end if
    end if

Nuevamente, la primera línea de código es solo para propósitos de prueba al igual que la parte "https://apple.stackexchange.com/" de myURL. Cámbialo por lo que desees y comenta o elimina la primera línea para usarlo normalmente.

Nota: El ejemplo de AppleScript código fue probado en macOS High Sierra.


Nota: El <em>ejemplo</em> de <strong>AppleScript</strong> <em>código</em> es solo eso y no contiene ningún manejo de <em>errores</em> como podría ser apropiado. La responsabilidad recae en el usuario de agregar cualquier manejo de <em>errores</em> que sea apropiado, necesario o deseado. Echa un vistazo a la <a href="https://developer.apple.com/library/archive/documentation/AppleScript/Conceptual/AppleScriptLangGuide/reference/ASLR_control_statements.html#//apple_ref/doc/uid/TP40000983-CH6g-129232" rel="nofollow noreferrer"><strong>sentencia</strong></a> <em>try</em> y la <a href="https://developer.apple.com/library/archive/documentation/AppleScript/Conceptual/AppleScriptLangGuide/reference/ASLR_control_statements.html#//apple_ref/doc/uid/TP40000983-CH6g-129657" rel="nofollow noreferrer"><strong>sentencia</strong></a> de <em>error</em> en la <a href="https://developer.apple.com/library/archive/documentation/AppleScript/Conceptual/AppleScriptLangGuide/introduction/ASLR_intro.html" rel="nofollow noreferrer"><strong>Guía de lenguaje AppleScript</strong></a>. Consulta también, <a href="https://developer.apple.com/library/archive/documentation/AppleScript/Conceptual/AppleScriptLangGuide/reference/ASLR_error_xmpls.html#//apple_ref/doc/uid/TP40000983-CH221-SW1" rel="nofollow noreferrer"><strong>Trabajar con Errores</strong></a>. Además, el uso del comando <a href="https://developer.apple.com/library/archive/documentation/AppleScript/Conceptual/AppleScriptLangGuide/reference/ASLR_cmds.html#//apple_ref/doc/uid/TP40000983-CH216-SW10" rel="nofollow noreferrer"><strong>delay</strong></a> puede ser necesario entre eventos cuando sea apropiado, por ejemplo, <code>delay 0.5</code>, con el <em>valor</em> del <em>delay</em> ajustado apropiadamente.

0voto

awy Puntos 500

Este truco también funciona.

Vincúlalo a un atajo de teclado usando una de estas respuestas:

  • ¿Cómo asigno un atajo de teclado a un AppleScript que escribí?

    tell application "Safari" tell window 1 to make new tab open location "site.com" end tell

    delay 0.5

    tell application "System Events" delay 0.5 keystroke "l" using command down key code 124 -- tecla derecha, ya que la URL ya está seleccionada keystroke "v" using command down delay 1 key code 36 -- enter. Pero ten cuidado, también puede "entrar" en cualquier ventana emergente que aparezca. end tell

0 votos

RE: "Este hack también funciona." -- ¡Tienes razón, es un hack! 1. Safari no entiende el open location command porque no forma parte del AppleScript dictionary, es parte de Standard Additions y no debe estar dentro de un tell application "Safari" block. Si otro navegador fuera el predeterminado, se abriría en ese otro navegador, no en Safari. 2. Esta construcción keystroke (key code 124) no es necesaria en absoluto, simplemente key code 124 es todo lo que se necesita, y lo mismo se aplica a los otros key code command en tu code. Continúa en el siguiente comentario...

0 votos

3. No hay absolutamente ninguna razón para usar UI Scripting en este caso de uso porque Safari tiene el vocabulario junto con the clipboard command de Standard Additions para lograr esto de manera simple y limpia como se muestra en mi respuesta. No es necesario recurrir al uso de UI Scripting, y solo debe usarse cuando no haya otra manera, o más adecuada, de lograr la tarea.

0 votos

Sólo modifiqué lo que recibí en la pregunta. // gracias por no votarlo negativamente (:

-1voto

Ryan Puntos 9

Terminé yendo con esto.

set this_text to the clipboard   
set theURL to "[url]http://www.site.com/[/url]" & this_text

tell application "Safari"    
   activate    
   if (count documents) is 0 then make new document    
   tell window 1
       set tabTest to URL of tab 1    
       try
           tabTest -- arroja un error si la ventana no tiene pestañas   
           set current tab to (make new tab with properties{URL:theURL})    
       on error    
           set URL of tab 1 to theURL    
       end try    
   end tell

end tell

0 votos

¿Puedes explicar con más detalle qué hace el código?

0 votos

Tengo que estar de acuerdo con nohillside, porque no veo la lógica en tu código, en particular por qué el set tabTest to URL of tab 1 y el try declaración que sigue. Si Safari tiene alguna ventana de navegador abierta entonces siempre hay una tab 1 y el on error nunca se activará. Además "[url]http://www.site.com/[/url]" está mal formado y nunca se abrirá debido a [url] y [/url]. Por favor, vea mi respuesta actualizada que maneja los diferentes escenarios típicos del estado de Safari.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X