El ejemplo AppleScript código que se muestra a continuación, se probó en Script Editor con pequeñas modificaciones para que funcione desde dentro, y tal cual como un Automatizador Servicio/Acción Rápida , bajo MacOS Catalina con Lengua y región ajustes en Preferencias del sistema ajustado a Inglés (EE.UU.) - Primaria y me ha funcionado sin problemas 1 .
- 1 Asume los ajustes necesarios y apropiados en <strong>Preferencias del sistema </strong>> <strong>Seguridad y privacidad </strong>> <strong>Privacidad </strong>se han fijado/abordado según las necesidades.
Ejemplo AppleScript código :
tell application "Mail"
reopen
activate
end tell
delay 0.25
tell current application
activate
set msg to "Select a Mail message to copy its Message ID"
display dialog msg buttons {"Cancel", "Selected"} default button 1
end tell
if button returned of result is "Selected" then
tell application "Mail"
set theSelectedMessages to selection
set the selectedMessage to item 1 ¬
of the theSelectedMessages
set messageID to the message id of the selectedMessage
set the clipboard to "message://<" & messageID & ">"
end tell
tell application "Calendar" to activate
delay 0.2
tell application "System Events" to keystroke "v" using command down
end if
Notas:
El código en el OP no está bien estructurado al tener anidados tell
bloques/declaraciones dentro de otro de una manera que no es apropiada. La página web ejemplo AppleScript código que se muestra arriba está correctamente estructurado para el eventos que deben tener lugar.
En la primera tell application "Mail"
bloque reopen
se utiliza para que si Correo ya está abierto y sin ventana abierto, se abre el ventana , lo que permite que se active para el usuario para hacer una selección.
El tell current application
bloque permite la mostrar el diálogo para venir al frente, para no quedar oculto bajo otros Windows .
En el Automatizador Servicio/Acción Rápida el ejemplo AppleScript código es todo lo que hay en el Ejecutar AppleScript acción . El Automatizador Servicio/Acción Rápida se ajusta a El flujo de trabajo recibe [sin entrada] en [Calendario] .
Como se trata de dos aplicaciones y un Automatizador Servicio/Acción Rápida utilizando un mostrar el diálogo se podría considerar la posibilidad de añadir alguna codificación adicional para establecer el límites/posición/tamaño de la Windows y cuadro de diálogo involucrado.
Si quiere evitar el uso de el portapapeles y luego cambiar las siguientes líneas de código :
Cambios:
set the clipboard to "message://<" & message_id & ">"
Para:
set theURL to "message://<" & messageID & ">"
Cambios:
tell application "System Events" to keystroke "v" using command down
Para:
tell application "System Events"
tell front window of process "Calendar"
if exists pop over 1 then
set the value of the first text field of pop over 1 ¬
whose value of attribute "AXPlaceholderValue" is "Add URL" to theURL
end if
end tell
end tell
Tenga en cuenta que para utilizar el código mostrado directamente arriba, el Evento debe aparecer como emergente y el cursor colocado en el Añadir URL cuadro de texto .
Ejemplo AppleScript código :
tell application "Mail"
reopen
activate
end tell
delay 0.25
tell current application
activate
set msg to "Select a Mail message to copy its Message ID"
display dialog msg buttons {"Cancel", "Selected"} default button 1
end tell
if button returned of result is "Selected" then
tell application "Mail"
set theSelectedMessages to selection
set the selectedMessage to item 1 ¬
of the theSelectedMessages
set messageID to the message id of the selectedMessage
set theURL to "message://<" & messageID & ">"
end tell
tell application "Calendar" to activate
delay 0.2
tell application "System Events"
tell front window of process "Calendar"
if exists pop over 1 then
set the value of the first text field of pop over 1 ¬
whose value of attribute "AXPlaceholderValue" is "Add URL" to theURL
end if
end tell
end tell
end if
Nota: El <em>ejemplo </em><strong>AppleScript </strong><em>código </em>es sólo eso y sin ningún tipo de inclusión <em>tratamiento de errores </em>no contiene ningún otro <em>tratamiento de errores </em>según corresponda. Corresponde al usuario añadir cualquier <em>tratamiento de errores </em>como sea apropiado, necesario o deseado. Eche 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>pruebe con </strong></a><em>declaración </em>y <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>error </strong></a><em>declaración </em>en el <a href="https://developer.apple.com/library/archive/documentation/AppleScript/Conceptual/AppleScriptLangGuide/introduction/ASLR_intro.html" rel="nofollow noreferrer"><strong>Guía del lenguaje AppleScript </strong></a>. Véase 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 de la <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>retraso </strong></a><em>comando </em>puede ser necesario entre eventos cuando sea apropiado, por ejemplo <code>delay 0.5</code> con el <em>valor </em>de la <em>retraso </em>ajustado apropiadamente.