AppleScript et entourage

muqaddarmuqaddar Administrateur
18:09 modifié dans Actualités #1
Salut,

Qui pourrait me dire pkoi ce code qui semble cohérent avec le dico entourage me renvoie une erreur :

--affichage<br />on sendMessage(messageID, folderName)	<br />	set currentMessage to message whose id is equal to messageID<br />end sendMessage<br />


Déjà  quand je tape ID il me le transforme en id...

Si vous avez entourage et connaissez un peu AS, un peu d'aide serait la bienvenue. Merci.

Réponses

  • 18:09 modifié #2
    Première chose, le terme "whose" te retourne une liste.
    J'ai fait comme exemple de code dans l'éditeur de script:
    <br />tell application &quot;Microsoft Entourage&quot;<br />	set l to get ID of every message of in box folder<br />	get every message of in box folder whose ID is 689<br />end tell<br />
    

    Et cela me retourne le message avec l'ID 689 se trouvant dans ma boà®te de réception.
    Si tu veux avoir l'élément et non la liste, il suffit de faire:
    <br />set selMail to every message of in box folder whose ID is 689<br />set item 1 of selMail<br />
    


    En espérant que cela t'aide :)
  • muqaddarmuqaddar Administrateur
    18:09 modifié #3
    Bein moi je veux juste récupérer le message qui a l'ID "messageID" parmis tous les messages...

    set currentMessage to (every message of folder folderName) whose ID is messageID
    


    en fait, je comprends pas pkoi ceci ne marche pas :

    set currentMessage to message whose ID is messageID
    
  • 18:09 modifié #4
    Car dans la logique "Applescriptienne" :D le terme whose désigne une liste d'éléments. En fait, whose sert à  te dire:
    "je veux tous les messages dont l'ID est 568"
    Après dans ton cas, il n'y a qu'un mais l'opérateur whose ne le sait pas à  l'avance*. Il te retourne donc une liste (d'où le lien every ... whose).

    (*) whose permettrait en une seule ligne de retourner tous les messages dont l'expéditeur est toto. Et cela en une seule ligne (et surtout avec un temps d'exécution très largement inférieur à  une boucle repeat)
  • muqaddarmuqaddar Administrateur
    18:09 modifié #5
    Oui mais justement, même ma première ligne ne marche pas...
    Alors je comprends pas !

    set currentMessage to (every message of folder folderName) whose ID is messageID

    merci.
  • mars 2005 modifié #6
    dans 1110131760:

    Oui mais justement, même ma première ligne ne marche pas...
    Alors je comprends pas !

    set currentMessage to (every message of folder folderName) whose ID is messageID

    merci.

    Il te met quelle erreur ?

    Remarque:
    N'oublie pas que si tu as le dossier "Achats" présent dans le dossier  "Boà®te de réception", tu dois faire:
    get every message of folder "Achats" of folder "Boà®te de réception"
  • muqaddarmuqaddar Administrateur
    18:09 modifié #7
    Il me renvoie une erreur perso "eRRoR", puisque j'appelle la fonction depuis un repeat...

    Si j'enlève la ligne, plus d'erreur signalée...
  • 18:09 modifié #8
    dans 1110132434:

    Il me renvoie une erreur perso "eRRoR", puisque j'appelle la fonction depuis un repeat...

    Si j'enlève la ligne, plus d'erreur signalée...


    Aà¯e, j'ai peur que la modif de mon message précédent et de ta réponse se sont croisées.  Me trompe je ?
  • muqaddarmuqaddar Administrateur
    18:09 modifié #9
    dans 1110132635:

    dans 1110132434:

    Il me renvoie une erreur perso "eRRoR", puisque j'appelle la fonction depuis un repeat...

    Si j'enlève la ligne, plus d'erreur signalée...


    Aà¯e, j'ai peur que la modif de mon message précédent et de ta réponse se sont croisées.  Me trompe je ?


    Oui, ils se sont croisés. :)

    En fait, mon script va prendre tous les dossiers et sous-dossiers, mais là  n'est pas le problème.

    tell application &quot;Microsoft Entourage&quot;<br />	<br />	set InboxFolderNames to name of every folder whose ID = 1 --Inbox<br />	set topFolderNames to name of every folder whose ID &gt; 6 --local mailboxes<br />	set topFolderNames to InboxFolderNames &amp; topFolderNames<br />	set topFolders to {}<br />	set theList to {}<br />	set arg to &quot;&nbsp;  &quot;<br />	set txt to &quot;&quot;<br />	try<br />		repeat with i from 1 to count topFolderNames<br />			set folderName to (item i of topFolderNames)<br />			set topFolder to folder folderName --IDs<br />			<br />			set unreadCount to unread message count of topFolder as integer<br />			if (unreadCount &gt; 0) then<br />				set everyMessage to (every message in topFolder whose read status is untouched)<br />				repeat with currentMessage in everyMessage<br />					set messageID to ID of currentMessage as integer<br />					my sendMessage(messageID, folderName)<br />				end repeat<br />				return txt<br />			end if<br />			<br />			--set theList to theList &amp; my GetSubFoldersOf(folderName, topFolder, arg)<br />		end repeat<br />	on error<br />		return &quot;eRRoR&quot;<br />	end try<br />	<br />	set folderList to {}<br />	set IDList to {}<br />	<br />	try<br />		repeat with j from 1 to count theList<br />			set end of folderList to item 1 of item j of theList<br />			set end of IDList to ID of (item 2 of item j of theList)<br />		end repeat<br />	on error<br />		return &quot;eRRoR&quot;<br />	end try<br />	<br />end tell
    


    Ce code marche bien. Il m'envir bien le folderName et le message ID.
    Ensuite, je veux juste récupérer le message avec son ID !

    on sendMessage(messageID, folderName)<br />	tell application &quot;Microsoft Entourage&quot;<br />		set currentMessage to message whose ID is messageID<br />	end tell<br />	<br />end sendMessage
    


    Et c'est là  que la fameuse ligne me renvoie eRRoR... alors qu'ici je me contente juste des messages de "inbox".
  • 18:09 modifié #10
    Ca y est , je pense avoir trouvé... tu as oublié de préciser le dossier.

    Il faut faire:
    <br />on sendMessage(messageID, folderName)<br />	tell application &quot;Microsoft Entourage&quot;<br />		set currentMessage to every message of folder folderName whose ID is (messageID as integer)<br />	end tell<br />	<br />end sendMessage<br />
    

    Le every message of folder folderName aide bien :)
  • muqaddarmuqaddar Administrateur
    18:09 modifié #11
    Yop,

    Merci. j'ai plus de message d'erreur mais l'éxécution du script ne se termine pas, comme s'il plantait. zarbi. Je m'y repenche demain...

    PS : j'ai fait la même chose pour Mail avec 4 fois moins de code et qui marche rapidement... non, non, j'ai rien contre M$. ;)
Connectez-vous ou Inscrivez-vous pour répondre.