¿Puede la automatización con AppleScript copiar texto de una página web a una aplicación de edición de texto?

Como primer intento en AppleScript, estoy buscando automatizar un comando de búsqueda y algunas acciones de seguimiento que normalmente serían ingresadas por el usuario.

En última instancia, quiero automatizar la adición de letras a mi biblioteca de iTunes. Mi primer desafío es decirle a Safari que busque una frase en una página web, haga clic en el enlace y luego copie el texto sin formato en la página que aparece en el portapapeles y luego péguelo en el Editor de texto.

No estoy seguro de cómo decirle a Safari que haga command+ F, pegue una frase del portapapeles y luego "haga clic" en el enlace resaltado.

No necesito un guión completo, pero ayuda para comenzar como mínimo

¿Cómo haría una o más partes de esta automatización?

Respuestas (1)

¡Tu primer AppleScript! Asombroso... Y un proyecto ambicioso para empezar, pero puedo ver su valor.

Mi respuesta no escribirá el guión por usted, pero le daré consejos sobre cómo abordar su problema de manera diferente y lograr lo que desea con un poco más de facilidad.

Para responder a sus consultas específicas primero:

Decirle Safari a Cmd-F

    tell application "Safari" to activate

    tell application "System Events" to keystroke "f" using command down

Pegar una frase desde el portapapeles

Envía un Cmd-V. Es posible que necesite un pequeño retraso entre los dos comandos de pulsación de teclas.

"Haga clic" en el enlace resaltado

no puedes No podrá identificar lo que está resaltado a través de una búsqueda Cmd-F con gran facilidad (posiblemente a través de secuencias de comandos GUI, pero eso será un desastre). Volveré sobre esto en breve.

Un enfoque diferente

Trabajando hacia atrás, supongamos que ha obtenido el texto que necesita pegar en TextEdit . No lo pegues. Establezca el contenido de un nuevo documento de TextEdit en el contenido del portapapeles:

    tell application "TextEdit" to set text of (make document) to the clipboard

Para configurar el portapapeles con el contenido de una página web de Safari, use este comando:

    tell application "Safari" to set the clipboard to  ¬
        (text of current tab of front window) as string

Y esto nos lleva de nuevo a hacer clic en el enlace...

Si literalmente desea hacer clic en un enlace en una página web, un método sería asegurarse de que Permitir Javascript de Apple Events esté marcado en el menú Desarrollar de Safari , y ejecutar do JavaScriptpara seleccionar el enlace que contiene el elemento de búsqueda relevante y hacer clic en él:

    tell application "Safari" to tell document 1 to do JavaScript ¬
        "Array.from(document.links).find(a => a.href.includes(\"cjk\")).click()"

Esto solo encuentra la primera instancia del tiempo de búsqueda, que he inferido que es suficiente dado que su método de hacer una búsqueda Cmd+F parecía contentarse con aceptar la primera aparición como la única de importancia.

Sin embargo, creo que todo el proceso podría simplificarse y volverse mucho más robusto usando Automator para ayudarnos. Puede extraer todas las URL directamente de una página web (todo lo que tiene que hacer es proporcionarle la URL de la página web en cuestión). Luego puede filtrar estas URL para buscar texto específico. Una vez que tenga la URL que desea, en lugar de hacer clic en ella, Automator puede descargar su contenido como texto e insertarlo directamente en un nuevo documento de TextEdit . Creo que casi no se necesitaría AppleScript, aunque puede complementarlo con algo de AppleScript para ajustar las cosas aquí y allá según sea necesario.

Sin su página web en cuestión, no puedo diseñar el flujo de trabajo específico para su aplicación. Sin embargo, eso también te privaría de la alegría de hacerlo tú mismo. Pero usando esta página web de Stack Exchange como ejemplo, el siguiente flujo de trabajo aísla la URL de su perfil de usuario (cuyo enlace se encuentra en la parte inferior de la pregunta que hizo), descarga el texto de su perfil y lo convierte en un nuevo TextEdit . documento:

ingrese la descripción de la imagen aquí

Con suerte, esto es suficiente para ayudarlo a lograr su objetivo. Si necesitas alguna aclaración, deja un comentario y te responderé cuando pueda.