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?
¡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:
tell application "Safari" to activate
tell application "System Events" to keystroke "f" using command down
Envía un Cmd-V. Es posible que necesite un pequeño retraso entre los dos comandos de pulsación de teclas.
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.
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
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 JavaScript
para 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:
Con suerte, esto es suficiente para ayudarlo a lograr su objetivo. Si necesitas alguna aclaración, deja un comentario y te responderé cuando pueda.