Tengo una serie de AppleScripts que son activados por las reglas de Mail.app. Funcionaban perfectamente (y aún lo hacen) en mi antiguo iMac con High Sierra, pero ahora tengo un nuevo iMac con Catalina en el que ya no funcionan.
Un ejemplo de script es el que aparece a continuación, que extrae algunos detalles del correo electrónico y luego crea un evento de Calendario que contiene esos detalles y añade un par de alarmas al evento.
-- Triggered by Mail rule.
using terms from application "Mail"
on perform mail action with messages theMessages for rule theRule
tell application "Mail"
repeat with theMessage in theMessages
try
set msgsubject to subject of theMessage
set msgcontent to content of theMessage
set msgid to message id of theMessage
set {amount, dueon} to my parseMsg(msgcontent)
my createEvent(msgsubject, msgid, amount, dueon)
end try
end repeat
end tell
end perform mail action with messages
end using terms from
-- Parse the email content to extract invoice details.
on parseMsg(msgcontent)
set amount to extractBetween(msgcontent, "Invoice for", "due by")
set dueon to extractBetween(msgcontent, "due by", "Review")
return {amount, dueon}
end parseMsg
-- Extract the substring from between two strings
to extractBetween(theString, startText, endText)
set tid to AppleScript's text item delimiters
set AppleScript's text item delimiters to startText
set startComps to text items of theString
set AppleScript's text item delimiters to endText
set endComps to text items of second item of startComps
set AppleScript's text item delimiters to tid
return trim(first item of endComps)
end extractBetween
-- Trim all whitespace from start and end of a string
on trim(theString)
set theChars to {" ", tab, character id 10, return, character id 0, character id 8232}
repeat until first character of theString is not in theChars
set theString to text 2 thru -1 of theString
end repeat
repeat until last character of theString is not in theChars
set theString to text 1 thru -2 of theString
end repeat
return theString
end trim
-- Create a calendar event for the specified invoice.
on createEvent(msgsubject, msgid, amount, dueon)
set startdate to (current date) + 28 * days
set sentdate to current date
-- set enddate to startdate
tell application "Calendar" to tell calendar "Invoices"
set theEvent to make new event with properties {start date:startdate, summary:"Check " & msgsubject, allday event:true}
delay 5
set description of theEvent to amount & return & "Due on: " & dueon & return & "Sent on: " & sentdate
delay 5
set url of theEvent to "message:" & "%3c" & msgid & "%3e"
delay 10
tell theEvent
-- Add a email alarm
make new mail alarm at end of mail alarms with properties {trigger interval:10}
delay 10
make new sound alarm at end of sound alarms with properties {trigger interval:370, sound name:"Sosumi"}
end tell
end tell
end createEvent
La siguiente regla de Mail.app activa el script
También he habilitado el acceso al Calendario para Mail.app en el Panel de Privacidad de las Preferencias del Sistema.
La regla intenta ejecutarse, ya que veo que aparece un pequeño icono de un engranaje en la barra de menú y se abre la aplicación Calendar.app, pero el evento del calendario no se añade. Como digo, esto funciona perfectamente en High Sierra. También tengo un AppleScript correspondiente que elimina las alarmas del Calendario cuando se recibe un correo electrónico alternativo. De nuevo este funciona en High Sierra pero tampoco funciona en Catalina.
¿Alguien tiene alguna idea?
Gracias, Alan.
0 votos
Le sugiero que pruebe su código en script Editor para que puedas atravesarlo. Obviamente tendrás que usar el
tell application "Mail"
en un contexto un poco diferente. Comentar temporalmente elon perform mail action with messages theMessages for rule theRule
línea de código y sólo settheMessages
a un solo mensaje , luego un par de mensajes para ver dónde está el resto de código está fallando.0 votos
Gracias, pensé en probarlo en script Editor pero no estoy seguro de cómo apuntar a un correo electrónico específico desde el propio script si no está siendo activado por una regla de correo?