12 votos

AppleScript/Automate Mail Tasks

He estado tratando de ayudar a un compañero de trabajo a automatizar una compilación de correos electrónicos semanales que envía, pero aún no he podido averiguar cómo abordar algunas áreas específicas... primero explicaré la situación, luego el objetivo.

Situación: El jefe de proyecto en el trabajo se ha encargado de recopilar información de varios empleados específicos (gerentes) cada semana con respecto a lo que sus respectivos equipos han estado trabajando (y qué progreso se ha hecho) y han programado para la próxima semana (todo este esfuerzo ocurre cada martes). Así que les ha pedido a todos ellos que utilicen un formato muy sencillo (sin saludo, sin salutación, nada más que el contenido real del que tienen que informar). Una vez que cada uno de estos correos electrónicos llega el lunes por la noche o el martes por la mañana, copia manualmente el texto de cada uno de ellos y lo pega en otro correo electrónico de uno en uno, componiendo así un correo electrónico con todo el contenido de cada uno de los otros. Una vez que tiene este nuevo correo electrónico con todo incluido, lo envía a su supervisor. (Que conste que comprendo perfectamente que hay innumerables formas mejores de hacer esto y que es irrisorio... pero esa no es mi batalla y es la forma en que se le indicó que lo hiciera, así que sólo intento facilitarle las cosas).

Objetivo: Ya he configurado reglas para que los correos específicos se muevan a una casilla designada (pensando que eso facilitaría la identificación de los mensajes correctos para el script/automatización), y mi siguiente paso era automatizar el... cotejo de estos mensajes y crear y enviar el nuevo mensaje único al jefe... y ahí es donde las cosas se han estancado.

He encontrado scripts para copiar, scripts para pegar, y (en una versión más antigua de OS x, 10.6 tal vez) incluso encontré una acción en Automator que compilaba el texto de los mensajes seleccionados (en Mail) en un nuevo mensaje... pero lamentablemente no se ejecuta en versiones más modernas del SO (específicamente 10.8 y 10.9).

Así que las preguntas son: ¿Es posible, y si es así cómo, automatizar la copia del cuerpo del mensaje de un grupo específico de correos electrónicos y pegar todo el texto en un nuevo correo electrónico, y hacer que se dirija en consecuencia y se envíe? El objetivo es que esta persona se siente frente a su ordenador los martes por la mañana, seleccione los correos electrónicos en cuestión (a menos que haya una forma de scriptpara que los mensajes correctos se seleccionen automáticamente) y luego ejecute el script/servicio/aplicación (a través de un atajo de teclado o de un icono en el dock, que puedo manejar) y termine con ello?

12voto

Steve Evans Puntos 155

Esto es ciertamente posible con AppleScript. Aquí tienes algunos recursos y fragmentos que te ayudarán a crear tu script ideal</strkeep><strkeep>.

El AppleScript final combina el contenido de los correos electrónicos seleccionados y prepara un correo electrónico saliente listo para ser enviado. Puede incrustar este AppleScript dentro de un flujo de trabajo de Automator, o guardarlo como una aplicación para hacer doble clic.

Obtener el contenido de los mensajes seleccionados

Desde Automatización de Spamcop :

set raw to {}
tell application "Mail"
    set msgs to selection
    if length of msgs is not 0 then
        repeat with msg in msgs
            set messageSource to source of msg
            set raw to raw & messageSource
            set background color of msg to gray     
        end repeat
    end if
end tell

Envío de correo electrónico con AppleScript

Desde Enviar correo electrónico con Applescript :

set recipientName to "WhiteHat"
set recipientAddress to "someemail@here.com"
set theSubject to "Type your subject here!"
set theContent to "Type your message content here!"

tell application "Mail"

        ##Create the message
        set theMessage to make new outgoing message with properties {subject:theSubject, content:theContent, visible:true}

        ##Set a recipient
        tell theMessage
                make new to recipient with properties {name:recipientName, address:recipientAddress}

                ##Send the Message
                send

        end tell
end tell

Combinar, crear y enviar

Combinando los dos fragmentos anteriores se obtiene el siguiente AppleScript:

set recipientName to "The Boss"
set recipientAddress to "boss@example.com"
set theSubject to "Type your subject here!"

set theCombinedContent to ""
tell application "Mail"
    set msgs to selection
    if length of msgs is not 0 then
        repeat with msg in msgs
            set theCombinedContent to theCombinedContent & (content of msg)
            -- set background color of msg to gray
        end repeat

        set theMessage to make new outgoing message with properties {subject:theSubject, content:theCombinedContent, visible:true}

        tell theMessage
            make new to recipient with properties {name:recipientName, address:recipientAddress}

            -- Uncomment line below to automatically send
            -- send

        end tell

    end if

end tell

3voto

Ofir Baruch Puntos 121
tell application "Mail"

  set theSubject to "Subject" -- the subject
  set theContent to "Content" -- the content
  set theAddress to "xxx@163.com" -- the receiver 
  set theSignatureName to "signature_name"-- the signature name
  set theAttachmentFile to "Macintosh HD:Users:moligaloo:Downloads:attachment.pdf" -- the attachment path

  set msg to make new outgoing message with properties {subject: theSubject, content: theContent, visible:true}

  tell msg to make new to recipient at end of every to recipient with properties {address:theAddress}
  tell msg to make new attachment with properties {file name:theAttachmentFile as alias}

  set message signature of msg to signature theSignatureName

  send msg
end tell

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