0 votes

Applescript ne renvoie pas de chaîne de caractères

J'ai une liste appelée num. Je l'ai convertie en chaîne de caractères. Je veux renvoyer cette chaîne pour que l'action suivante appelée "Nouveau fichier texte" dans mon flux de travail Automator puisse obtenir la chaîne. Voici mon code

on run {input, parameters}
    set num to {1,2}
    set f to ""
    repeat with x in num
        set f to f & x & "\n"
    end repeat
    return f
end run

Il ne renvoie rien.

EDIT : Comme certains d'entre vous l'ont demandé. Je vais développer la question. Mon flux de travail automate, prend certaines parties d'un texte dans un email, il récupère tous les numéros de téléphone dans le groupe qui est spécifié dans le texte de l'email, et les stocke dans un fichier texte.

la variable "cat" contient la liste des groupes de contact

Voici le code complet :

on run
    set cat to value of variable "cat" of front workflow (*I have already defined the variable elsewhere in the workflow*)
    set num to {}
    set f to ""
    tell application "Contacts"
        repeat with i in cat
            set inGroup to group i
            set phoneProps to value of phones of inGroup's people
            set end of num to first item of first item of phoneProps
        end repeat
    end tell
    repeat with x in num
        set f to f & x & "\n"
    end repeat
    return f
end run

Ce code est censé être suivi d'une action "nouveau fichier texte" qui devrait prendre la sortie de l'action précédente ("exécuter applescript") comme entrée. Ce n'est pas le cas car, pour une raison quelconque, Applescript refuse de renvoyer la valeur même si j'obtiens la valeur souhaitée en utilisant "afficher le dialogue".

MISE À JOUR : je publie à présent l'ensemble du flux de travail.

Entrée - Dans l'application mail - Un e-mail avec ce contenu - "#a, #b Q : ceci est une question pour vous tous".

Flux de travail -

1) Exécuter Applescript Code -

 on run {input, parameters}

    tell application "Mail" to set theMessageText to content of (get first message of inbox)
    set topic to text ((offset of "#" in theMessageText) + 1) thru ((offset of "Q" in theMessageText) - 1) of theMessageText
    set AppleScript's text item delimiters to ", "
    set bowords to words of topic
    set o to length of bowords
    repeat with i from 1 to o
        trim_line(bowords, "#", 0)
    end repeat
    bowords
end run
on trim_line(this_text, trim_chars, trim_indicator)
    set x to the length of the trim_chars
    -- TRIM BEGINNING
    if the trim_indicator is in {0, 2} then
        repeat while this_text begins with the trim_chars
            try
                set this_text to characters (x + 1) thru -1 of this_text as string
        on error
                -- the text contains nothing but the trim characters
                return ""
            end try
        end repeat
    end if
    -- TRIM ENDING
    if the trim_indicator is in {1, 2} then
        repeat while this_text ends with the trim_chars
            try
                set this_text to characters 1 thru -(x + 1) of this_text as string
            on error
                -- the text contains nothing but the trim characters
                return ""
            end try
        end repeat
    end if
    return this_text
end trim_line

2) Définir la valeur de la variable

Définit la sortie de l'action précédente à 'cat'

3) Exécuter Applescript

on run {input, parameters}
    tell application "Mail" to set theMessageText to content of (get first message of inbox)
end run

4) Nouveau message

Ajoute le texte de l'action précédente au corps de l'e-mail

5) Exécuter Applescript

Le code que @Tetsujin a donné dans les réponses

6) Nouveau fichier texte

7) Ajouter des pièces jointes au message principal

8) Envoyer des messages sortants

9) Exécuter Applescript (supprime l'e-mail)

Code -

on run {input, parameters}
    delay (10)
    tell application "Mail"
        set theMessages to (get selection)
        repeat with eachMessage in theMessages
            set theAccount to account of (mailbox of eachMessage)
            move eachMessage to mailbox "Trash" of theAccount
        end repeat
    end tell    
    return input
end run

1voto

Tetsujin Points 95239
on run
    set cat to value of variable "cat" of front workflow (*I have already defined the variable elsewhere in the workflow*)
    set num to {}
    set myString to ""
    tell application "Contacts"
        repeat with i in cat
            set inGroup to group i
            set phoneProps to value of phones of inGroup's people
            repeat with i in phoneProps
                try
                    set myString to myString & "\n" & first item of i (*gets first number only*)
                on error
                    set myString to myString & "\n" & "blank field" (*covers for empty phone number, otherwise would halt on error*)
                end try
            end repeat
        end repeat
        return myString
    end tell  
end run

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