0 votes

Apple script ne s'exécute pas comme prévu

Ce qui suit est un applescript qui a pour but de prendre le corps du dernier email et d'en extraire du texte. Comme vous pouvez le voir, le résultat est indiqué ci-dessous. Ce résultat est montré car le script s'exécutait correctement avant. Maintenant, il ne l'est plus.

The following is an applescript which is meant to take the body of the latest email and extract text out of it. As you can see the result is shown below. This result is show as the script was running correctly before. Now it is not.

Le courriel que j'ai envoyé par la suite contenait le message "#tech sxi" mais le script ne montre pas la sortie correcte pour ce courriel. Ce n'est pas le seul cas. Chaque fois que j'envoie un nouveau courrier et que je relance le script, j'obtiens le même problème, le résultat ne change pas.

1voto

ggruen Points 146

Comme l'un des commentateurs y a fait allusion, "obtenir le premier message de la boîte de réception" ne retournera probablement pas ce que vous attendez.

Lorsque vous récupérez des messages à l'aide d'AppleScript, Mail trie les comptes de votre boîte aux lettres. par ordre alphabétique . Dans la boîte de réception de chaque compte, les messages sont triés par ordre croissant. Ce que vous avez sélectionné dans Mail ne change pas l'ordre dans lequel ils sont renvoyés à AppleScript.

Ainsi, si vous avez les comptes suivants et les messages de la boîte de réception apparaissant dans Mail dans cet ordre :

  • Mon iCloud
    • Message daté du 1/5/16
    • Message daté du 1/10/16
  • Mon Gmail
    • Message daté du 1/10/16
    • Message daté du 1/5/16

"get first message of inbox" retournera le message daté du 1/5/16 du compte "My Gmail" (G vient avant i, 1/5/16 vient avant 1/10/16).

Je pense que vous avez plus d'un compte dans Mail.

  • Nommez la boîte aux lettres spécifique. Le message sera toujours le message le plus récent dans "Mon Gmail". (Le nom du compte est le même que celui que vous voyez dans Mail dans la liste sous Inbox).

    set theMessage to first message in mailbox "INBOX" of account "My Gmail"

Il s'agit toutefois d'une approche inhabituelle, car le courrier se déplace, de sorte que le premier message de votre boîte aux lettres pourrait devenir votre deuxième message de manière inattendue.

Voici quelques moyens fiables d'extraire des données des messages :

  • Utilisez messages sélectionnés (messages que vous avez sélectionnés en cliquant dessus dans Mail) :

    tell application "Mail"
        set theMessages to selection
    
        -- This block extracts the topics from the messages
        repeat with theMessage in theMessages
            set theMessageText to content of theMessage
            try
                -- Set topic to the string starting just after the hash
                set topic to rich text ((offset of "#" in theMessageText) + 1) thru end of theMessageText
                -- Truncate the topic at the first space
                set topic to rich text 1 thru ((offset of " " in topic) - 1) of topic
            on error
                -- No topic found in message
                set topic to ""
            end try
            log topic
    
        end repeat
    end tell
  • Règles du courrier (exécuter un script sur les messages qui correspondent à certains critères). Dans Mail, ouvrez Préférences > Règles. Créez une nouvelle règle avec "Exécuter AppleScript" comme action. Sélectionnez "Ouvrir dans le Finder" dans le menu qui vous permet de sélectionner le script à exécuter. Ouvrez l'éditeur script, et enregistrez le code ci-dessous en tant que script dans le dossier que Mail a ouvert. De retour dans Mail, sélectionnez votre script sauvegardé comme le script à exécuter :

    using terms from application "Mail"
        on perform mail action with messages theMessages for rule thisRule
            -- This block extracts the topics from the messages
            repeat with theMessage in theMessages
                set theMessageText to content of theMessage
                try
                    -- Set topic to the string starting just after the hash
                    set topic to rich text ((offset of "#" in theMessageText) + 1) thru end of theMessageText
                    -- Truncate the topic at the first space
                    set topic to rich text 1 thru ((offset of " " in topic) - 1) of topic
                on error
                    -- No topic found in message
                    set topic to ""
                end try
                log topic
            end repeat
    
        end perform mail action with messages
    end using terms from

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