12 votes

AppleScript/Automatisation des tâches de messagerie

J'ai essayé d'aider un collègue de travail à automatiser une compilation hebdomadaire d'e-mails qu'il envoie, mais je n'ai pas encore réussi à trouver comment aborder quelques domaines spécifiques... Je vais d'abord expliquer la situation, puis l'objectif.

Situation : Le chef de projet au travail a été chargé de recueillir chaque semaine des informations auprès de plusieurs employés (managers) spécifiques concernant le travail de leurs équipes respectives (et les progrès accomplis) et ce qui est prévu pour la semaine à venir (tout cela a lieu chaque mardi). Il leur a donc demandé d'utiliser un format très simple (pas d'accueil, pas de salutation, rien d'autre que le contenu réel de leur rapport). Une fois que chacun de ces courriels lui est parvenu dans la nuit du lundi au mardi matin, il copie manuellement le texte de chacun d'entre eux et le colle dans un autre courriel, l'un après l'autre, composant ainsi un courriel avec tout le contenu de chacun des autres. Une fois qu'il a obtenu ce nouveau courriel complet, il l'envoie à son superviseur. (Pour mémoire, je comprends parfaitement qu'il existe d'innombrables meilleures façons de faire et que c'est risible... mais ce n'est pas ma bataille et c'est la façon dont il a reçu l'instruction de le faire, alors j'essaie simplement de lui faciliter la tâche).

Objectif : J'ai déjà mis en place des règles pour que les emails spécifiques soient déplacés vers une boîte désignée (en pensant que cela faciliterait l'identification des messages corrects pour le script/automation), et ma prochaine étape était d'automatiser la... collation de ces messages et la création et l'envoi du nouveau message unique au patron... et c'est là que les choses se sont bloquées.

J'ai trouvé des scripts pour copier, des scripts pour coller, et (sur une ancienne version de OS x, 10.6 peut-être) j'ai même trouvé une action dans Automator qui compilait le texte de messages sélectionnés (dans Mail) dans un nouveau message... mais malheureusement, elle ne fonctionne pas sur des versions plus modernes de l'OS (spécifiquement 10.8 et 10.9).

La question est donc la suivante : Est-il possible, et si oui comment, d'automatiser la copie du corps du message d'un groupe spécifique d'emails et de coller tout le texte dans un nouvel email, et de l'adresser en conséquence et de l'envoyer ? Le but est que ce type s'assoie devant son ordinateur le mardi matin, qu'il sélectionne les emails en question (à moins qu'il n'y ait un moyen de script pour que les bons messages soient sélectionnés automatiquement) puis qu'il exécute le script/service/application (via un raccourci clavier ou une icône de dock, les deux pouvant être gérés par moi) et qu'il en ait fini avec ça ?

12voto

Graham Miln Points 39606

C'est tout à fait possible avec AppleScript. Voici quelques ressources et extraits pour vous aider à élaborer votre script idéal.

L'AppleScript final combine le contenu de tous les e-mails sélectionnés et prépare un e-mail sortant prêt à être envoyé. Vous pouvez intégrer cet AppleScript dans un flux de travail Automator, ou l'enregistrer comme une application à double-cliquer.

Obtenir le contenu des messages sélectionnés

De Automatisation 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

Envoi d'e-mails avec AppleScript

De Envoyer un courriel à l'aide d'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

Combiner, créer et envoyer

En combinant les deux extraits ci-dessus, on obtient l'AppleScript suivant :

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

4voto

jericho Points 31
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

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X