Version imprimable du sujet

Cliquez ici pour voir ce sujet dans son format original

Forums MacBidouille _ Technologies Apple _ affichage des heures d'envoi des mails via AppleScript

Écrit par : davdenice 21 Oct 2022, 16:20

Bonjour,
Je cherche un script qui pourrait enregistrer tous les destinataires et les objets de mails écrits après 20h00 dans un fichiers .txt
Je bidouille un peu Applescript depuis peu, à part démarrer l'application Mail, je ne sais pas faire grand chose...
Merci pour votre aide.

Écrit par : Zeltron54 21 Oct 2022, 22:08

Bonjour,

Si J'ai bien compris tu veux extraire les éléments des mails qui sont dans ta boite d'envoie et qui ont été envoyés après 20 heure.

Donc tu ouvres mail, dans ta boite d'envoi tu sélectionnes tous les mails puis tu lances ce script, il crée sur le bureau un fichier texte du nom de "les mails apres 20 heure.txt" contenant les infos (1 ligne par mail).
Il te met un message lorsqu'il a terminé.
Dis moi si cela te convient .

Code
tell application "Mail" to if running then
    repeat with tMsg in (get selection)
        set Ladate to the (date received of tMsg) as rich text --date du mail envoi ou recu
        
        set heure to characters -8 thru -7 of Ladate as string
        if heure > 19 then
            
            set objet to (subject of tMsg) --objet du mail envoi ou recu
            set adresse to {address of recipient of tMsg} as string --adresse mail destinataire si boite envoi
            set aqui to (name of recipient of tMsg) as string --nom destinatairer si boite envoi
            if aqui = "missing value" then set aqui to "?"
            set expediteur to (sender of tMsg) as string --expediteur si boite recu ton adresse si boite envoi
            tell application "Finder"
                set lelog to open for access ((path to desktop folder as text) & "les mails apres 20 heure.txt") as text with write permission
                write "Mail envoyé à : " & aqui & " Adresse mail : " & adresse & " Objet : " & objet & " le : " & Ladate & return to lelog starting at eof
                close access lelog
            end tell
        end if
    end repeat
end if

tell application "Finder"
    activate
    (display dialog ("waouou ... Ca y est c'est fait !") buttons {"Salut !"})
end tell

Écrit par : PBell 22 Oct 2022, 08:17

Bonjour,
Zeltron est vraiement très rapide ! Bravo.
Voici un autre exemple de script qui peut te servir de point de départ. Cela montre, qu'il y a toujours plusieurs façon d'écrire un script.
Celui-ci liste tous les mails envoyés depuis xx jours (ici 1) après 20 heure, sans qu'il soit nécessaire de les avoir sélectionnés au préalable.

CODE
set MDate to (current date) - days * 1 -- défini hier comme date de recherche
set AppleScript's text item delimiters to tab -- défini le séparateur des adresses
set heurelimite to 20 -- défini l'heure à partir de laquelle il faut lister
set monTexte to ""
tell application "Mail"
    set maListe to (every message in sent mailbox whose date sent > MDate)
    repeat with unMessage in maListe
        set maDate to date sent of unMessage
        if hours of maDate ≥ 20 then
            set mesDestinataires to (address of recipients of unMessage) as rich text
            set monTexte to monTexte & subject of unMessage & tab & mesDestinataires & return
        end if
    end repeat
end tell
if monTexte is "" then return -- rien à enregistrer

set Fichier_Log to (((path to desktop) as text) & "emails_envoyés.txt")
try
    do shell script "touch " & (quoted form of (POSIX path of Fichier_Log))
    do shell script "echo " & (quoted form of monTexte) & " >> " & (quoted form of (POSIX path of Fichier_Log))
end try


Cordialement

Écrit par : davdenice 22 Oct 2022, 08:47

Merci pour vos réponses super rapides, je ne m'attendais pas à autant de réactivité wub.gif
Je vais tester vos scripts, encore merci !


Écrit par : Zeltron54 22 Oct 2022, 08:52

@PBell Bonjour,

Ton script est bien plus sophistiqué que le mien, et bien plus subtil ...Bravo

J'ai écris çà car la demande disait qu'il démarrait en applescript .
J'ai voulu faire simple avec explications... Mais je suis bien en-dessous de tes capacités.

Bonne journée
Amicalement !


Écrit par : davdenice 22 Oct 2022, 09:24

Une petite question : où avez-vous appris à programmer en Applescript ? J'ai trouvé des sites francophones mais qui datent, aucun livre français récent... Je suppose qu'il s'orienter vers des ressources anglophones ?


Écrit par : PBell 22 Oct 2022, 12:25

Bonjour Davdenice,
Je suggère le site Apple (en anglais !) pour commencer : https://developer.apple.com/library/archive/documentation/AppleScript/Conceptual/AppleScriptLangGuide/introduction/ASLR_intro.html

Ensuite, dans l'éditeur de script, ouvre la fenêtre Bibliothèque pour accéder aux dictionnaires de quelques applications: cela te donnera les objets et classes Applescript que tu peux utiliser dans chaque application.

Enfin, et surtout, il ne faut pas hésiter à écrire et tester.
Quelque soit le langage , la pratique est le meilleur moyen d'apprendre (c'est vrai aussi dans tous les autres domaines !).
D'autant plus que, aujourd'hui, chaque question peut trouver une réponse sur Google...bien plus facilement qu'il y a 40 ans cool.gif !!
...en particulier sur ce site: Tu l'as constaté, Macbidouille est réactif.

Hormis lorsque tu écris ou supprime des fichiers, AppleScript ne peux pas endommager ton Mac (surtout sur les derniers systèmes), donc essaye tout !
Cordialement

Bonjour Zeltron54

QUOTE (Zeltron54 @ 22 Oct 2022, 09:52) *
Ton script est bien plus sophistiqué que le mien, et bien plus subtil ...Bravo


Merci. je prend le compliment.
Mais fondamentalement les 2 scripts font une boucle sur chaque message et de ce fait sont assez similaires. Au contraire, je trouve toujours que les différentes manières de résoudre un problème sont toujours plus instructives, surtout pour des débutants.

La différence est dans l'écriture du fichier:
Compte tenu des capacités mémoires actuelles, j'ai tendance à tout stocker dans une variable en mémoire et l'enregistrer en une seule fois à la fin, plutôt que d'écrire ligne par ligne.
Bien sûr ta méthode (ligne par ligne) est bien plus pertinente si il y a avait plusieurs centaines ou milliers de lignes à écrire.

Cordialement

Écrit par : davdenice 22 Oct 2022, 13:02

Je suis désolé de vous embêter, mais quand je lance vos scripts il ne se passe rien.
Je n'ai pas de message d'erreur, Mail est lancé, mais ça s'arrête là.
Dois-je modifier les scripts quelque part pour les adapter à mon Mac ? (adresse mail par exemple ?).
Merci pour votre aide.

Écrit par : PBell 22 Oct 2022, 13:18

Le lancement du script ouvre effectivement Mail, et recherche les emails envoyés hier après 20h.
Si il n'y a pas d'emails correspondant, le script ne fait rien.
Si il y en a, un fichier texte nommé "emails_envoyés.txt" est enregistré sur ton bureau.

As-tu des emails envoyés hier après 20h ?

Si tu veux tester sur les 2 ou 3 jours précédents, tu peux changer la première ligne: par exemple "days * 4" prendra les 4 derniers jours.

Cordialement

Écrit par : davdenice 22 Oct 2022, 13:29

Citation (PBell @ 22 Oct 2022, 14:18) *
Le lancement du script ouvre effectivement Mail, et recherche les emails envoyés hier après 20h.
Si il n'y a pas d'emails correspondant, le script ne fait rien.
Si il y en a, un fichier texte nommé "emails_envoyés.txt" est enregistré sur ton bureau.

As-tu des emails envoyés hier après 20h ?

Si tu veux tester sur les 2 ou 3 jours précédents, tu peux changer la première ligne: par exemple "days * 4" prendra les 4 derniers jours.

Cordialement


Super ça fonctionne ! Merci beaucoup.
En effet, j'ai fait la modification que tu m'as indiquée, j'ai mis 1095 (=3 ans) à la place de 1 et ça fonctionne ! Encore merci !!!

Écrit par : davdenice 22 Oct 2022, 14:25

comment faire pour sélectionner un compte email en particulier ?

j'ai essayé de modifier le code en ajoutant :

tell application "Mail"
set account name to "[email protected]"

mais ça ne fonctionne pas ...

Serait-il possible également sans vouloir abuser de m'indiquer comment faire pour avoir un texte de sortie tel que :

compte d'envoi / heure d'envoi / jour d'envoi / date d'envoi / destinataire / sujet

Merci beaucoup.

Écrit par : davdenice 22 Oct 2022, 14:47

j'ai essayé :

Code
set maListe to (every message in sent "[email protected]" whose date sent > MDate)


Cela ne fonctionne pas non plus...

Écrit par : PBell 22 Oct 2022, 17:57

QUOTE (davdenice @ 22 Oct 2022, 15:25) *
comment faire pour sélectionner un compte email en particulier ?


Il suffit de changer la ligne de sélection des emails:
CODE
set maListe to (every message in sent mailbox whose date sent > MDate)


...qui devient:
CODE
set maListe to (every message of mailbox "Sent Messages" of account "[email protected]" whose date sent > MDate)


Cette nouvelle ligne filtre la demande de messages pour le compte "[email protected]" (remplacer par ton compte).
La seconde différence est que "sent mailbox" de la version précédente représentait la boite d'envoi générique de Mail et il faut maintenant donner la boite d'envoi spécifique liée à ton compte. J'ai mis ici la boite d'envoi "Sent Messages". A toi de mettre le nom de ta boite d'envoi de ton compte.

Malheureusement, il est difficile de connaître le nom de cette boite d'envoi spécifique à un compte qui semble attribuée par Mail (ou par le serveur de messagerie ?) à la création du compte. Je n'ai pas souvenir d'avoir crée ces valeurs !.
Donc pour la trouver, j'ai écrit le script ci-dessous :

CODE
tell application "Mail"
    repeat with monCompte in every account
        log "account=" & name of monCompte
        get every mailbox of monCompte
    end repeat
end tell


Dans l'AppleScript Editor, tu demandes à afficher les réponses en bas de la fenêtre et tu lances ce script.
Dans les réponses, tu vas trouver, pour chacun de tes comptes, les mail boxes associées, y compris celle d'envoi.
A titre d'exemple, j'ai 3 comptes et mes mailboxes d'envoi sont: "Sent Messages", "INBOX/OUTBOX" et "[Gmail]/Messages envoyés".

Enfin, en reprenant mon script initial pour tester, j'ai trouvé une petite erreur:
La ligne
CODE
if hours of maDate ≥ 20 then

doit être remplacée par
CODE
if hours of maDate ≥ heurelimite then

Comme la variable heurelimite vaut 20, cela fonctionne toujours, mais la nouvelle ligne est plus propre !

Cordialement

Écrit par : davdenice 24 Oct 2022, 14:38

Hello,

J'ai bien fait les modifications que tu m'as indiquées.

J'ai remplacé "Sent Messages" par INBOX.INBOX.Sent qui semble être la boîte qui stock les messages envoyés.

j'ai le message d'erreur suivant :

error "Erreur dans Mail : Il est impossible d’obtenir account \"[email protected]\"." number -1728 from account "[email protected]"

Écrit par : PBell 24 Oct 2022, 14:46

Bonjour,
Il faut bien sûr remplacer "[email protected]" par le nom du compte mail sur lequel tu veux travailler.
"[email protected]" n'était qu'un exemple, car je ne connais pas le compte email que tu souhaites analyser.

En général le nom du compte est le même que l'email qui lui est associé,...mais cela dépend de tes réglages.
Si tu as un doute, le script suivant te donnera le nom des comptes Mail (toujours vregarder le résultat dans l'onglet "Réponses" de l'éditeur de script:

CODE
tell application "Mail" to get get every account



Bien sûr, il en est de même pour INBOX.INBOX ...qui ne représente probablement pas une boite d'envoi, mais sans doute une boite de réception.
As tu lancer le script que j'ai fourni pour connaître les boites mails existantes ?

Si tu as un doute, copie/colle le résultat dans un mail privé à mon attention (pour éviter que tout le monde voit tes adresses et comptes). Promis je n'en ferai rien (-:
Cordialement

Écrit par : davdenice 24 Oct 2022, 15:01

finalement j'ai pu trouver la boite de messages sortants et j'ai rentré le code :

Code
mailbox "INBOX.INBOX.Sent" of account id "7CED9D99-5716-49C9-C211-1C3A281AF778" of application "Mail"


Je suis sûr à 100% que c'est cette boite là, j'ai récupéré le code ci-dessus grâce à ton second script.

Cependant je n'ai qu'une dizaine de messages alors qu'en théorie il y en a beaucoup plus envoyés après 20h.

Écrit par : davdenice 24 Oct 2022, 15:17

L'idéal serait de pouvoir traiter les mails dans le dossier "Envoyés" de [email protected].



 

Écrit par : PBell 24 Oct 2022, 16:17

Bien: on progresse.
La boite est donc "INBOX.INBOX.Sent". Cela ressemble effectivement à une boite d'envoi
Le compte affiche le compte Id et pas le nom du compte, mais cela peut aussi fonctionner comme ça : l'Id est seulement moins sympa que le nom du compte

Si tu n'as qu'une dizaine de messages, ...c'est que la sélection n'en donne que 10 (!)
Sur combien de jours dans le passé cherches tu ?
Dans un post précédent tu indiques avoir mis 1095 jours. Est-ce toujours le cas ? C'est à dire la première ligne donne bien une date au 25/10/19

Tu peux suivre ça toujours dans le fenêtre "Réponses" de l'éditeur AppleScript, après exécution du script.
La ligne

CODE
set maListe to (every message of mailbox "INBOX.INBOX.Sent" of account id "7CED9D99-5716-49C9-C211-1C3A281AF778" whose date sent > MDate)

doit retourner, dans les résultats, tous les emails correspondants aux critères:
1) boite d'envoie =INBOX.INBOX.Sent
2) account =7CED9....
3) date de l'envoi > 25/10/19 (aujourd'hui - 1095 jours)

Regarde dans les résultats: combien d'emails sont listés ?
Probablement 10 !
Attention, le script regarde les emails placés dans la boite d'envoi. Si certains emails, une fois envoyés, sont déplacés dans une autre boite ou archive,...alors ils ne sont plus dans le boite d'envoi !

Quant à ton second message, je suis un peu perplexe: As tu réellement un compte avec un adresse email "[email protected]" ? ohmy.gif

Cordialement

Écrit par : davdenice 24 Oct 2022, 16:24

Non, je n'ai aucun compte toto biggrin.gif

Le script actuel est :

Code
set MDate to (current date) - days * 1095 -- définir jour de  date de recherche
set AppleScript's text item delimiters to tab -- défini le séparateur des adresses
set heurelimite to 20 -- défini l'heure à partir de laquelle il faut lister
set monTexte to ""




tell application "Mail"
    set maListe to (every message of mailbox "INBOX.INBOX.Sent" of account id "7CBE9D99-5716-49C9-B211-1C3B282AF778" of application "Mail" whose date sent > MDate)
    repeat with unMessage in maListe
        set maDate to date sent of unMessage
        if hours of maDate ≥ heurelimite then
            set mesDestinataires to (address of recipients of unMessage) as rich text
            set monTexte to monTexte & subject of unMessage & tab & mesDestinataires & return
        end if
    end repeat
end tell
if monTexte is "" then return -- rien à enregistrer

set Fichier_Log to (((path to desktop) as text) & "emails_envoyés.txt")
try
    do shell script "touch " & (quoted form of (POSIX path of Fichier_Log))
    do shell script "echo " & (quoted form of monTexte) & " >> " & (quoted form of (POSIX path of Fichier_Log))
end try


Encore merci beaucoup pour ton aide !

Autre question :
Est-ce possible d'indiquer le jour de l'envoi du mail (lundi, mardi, mercredi etc...) + la date dans le .txt ?

Écrit par : Zeltron54 24 Oct 2022, 16:55

Bonjour,

Citation
Autre question :
Est-ce possible d'indiquer le jour de l'envoi du mail (lundi, mardi, mercredi etc...) + la date dans le .txt ?


Change la ligne
Citation
set monTexte to monTexte & subject of unMessage & tab & mesDestinataires & return

par
Code
set monTexte to monTexte & subject of unMessage & tab & mesDestinataires & tab & maDate & return


Qui met:
l'objet "une tabulation" le destinataire "une tabulation" le jour et l'heure

Écrit par : davdenice 24 Oct 2022, 21:27

Merci pour ton aide.

Alors je suis revenu sur la version initiale de ton script, que j'ai modifié avec la dernière ligne de code que tu m'as donnée.

Code
set MDate to (current date) - days * 1095 -- défini hier comme date de recherche
set AppleScript's text item delimiters to tab -- défini le séparateur des adresses
set heurelimite to 20 -- défini l'heure à partir de laquelle il faut lister
set monTexte to ""
tell application "Mail"
    set maListe to (every message in sent mailbox whose date sent > MDate)
    repeat with unMessage in maListe
        set maDate to date sent of unMessage
        if hours of maDate ≥ 20 then
            set mesDestinataires to (address of recipients of unMessage) as rich text
            set monTexte to monTexte & maDate & tab & subject of unMessage & tab & mesDestinataires & tab & return
        end if
    end repeat
end tell
if monTexte is "" then return -- rien à enregistrer

set Fichier_Log to (((path to desktop) as text) & "emails_envoyés.txt")
try
    do shell script "touch " & (quoted form of (POSIX path of Fichier_Log))
    do shell script "echo " & (quoted form of monTexte) & " >> " & (quoted form of (POSIX path of Fichier_Log))
end try


Je demande au script de m'indiquer en premier la date du mail envoyé
Cependant, je note que les dates sont mélangées, par exemple j'ai plusieurs mails de 2022, puis plusieurs de 2021, puis plusieurs de 2020, et à nouveau plusieurs de 2022...
Est-ce possible de modifier le script pour que les dates soient classées dans l'ordre croissant ou décroissant ? Ou bien est ce possible d'exporter le tout dans un fichier .xlsx ou .numbers ? J'ai essayé de remplacer le .txt par ces 2 extensions, le fichier est crée mais j'ai un message d'erreur, Excel et Numbers refusent d'ouvrir le fichier.
J'ai réussi à créer un fichier .csv, j'obtiens un tableau lisible, mais c'est découpé n'importe comment. Est-ce possible de le formater dans le script ?

Écrit par : PBell 25 Oct 2022, 15:46

Bonjour,
Lorsqu'on demande à Mail de retourner la liste des emails avec certains critères, il n'y a pas d'option de tri de ces emails. Le plus simple est donc de les trier dans un tableur comme Excel.
La conversion txt vers Excel se fait tout simplement via un fichier csv.
Par habitude, c'est la raison pour laquelle j'ai utilisé le caractère tab (-ulation) comme séparateur de colonnes.

Ce que tu peux simplifier, c'est déjà d'enrigistrer le fichier en .csv à la place du .txt. Pour ce faire, il suffit de corriger la ligne:

CODE
set Fichier_Log to (((path to desktop) as text) & "emails_envoyés.txt")


en
CODE
set Fichier_Log to (((path to desktop) as text) & "emails_envoyés.csv")



Enfin quant au dernier point sur le formatage, c'est l'une des joies d'Applescript: le formattage des dates !!
Applescript manipule les dates en leur donnant par défaut un format explicite. Par exemple, aujourd'hui est traduit par "mardi 25 octobre 2022 16:51:06".
Ce n'est pas très pratique pour Excel mad.gif
Il faut donc demander explicitement à utiliser le format "Short date string" qui renvoi un "25/10/2022", bien plus sympathique.

Le voici ajouté dans la ligne de code du script:
CODE
set monTexte to monTexte & (short date string of maDate) & tab & subject of unMessage & tab & mesDestinataires & tab & return


Tu remarques que ce short date string occulte la partie heure:minute:seconde. Comme tu as déjà filtré les emails pour les heures d'envoi, tu n'en as probablement pas besoin.
(à moins que ...?)

Maintenant, avec cette nouvelle ligne, lorsque tu ouvres le fichier dans Excel, il faut le convertir en colonnes en utilisant tab comme séparateur (ainsi 25/10/2022 restera dans une seule colonne Excel sur laquelle tu pourras trier). Il faut utiliser la fonction Excel conversion de texte en colonne.

Dernière précision: le nombre de colonnes reste variable, car le nombre d'adresse destinataire est lui-même variable: Colonne C si 1 seul, C et D si il y en 2 et ainsi de suite.

Cordialement

Écrit par : davdenice 26 Oct 2022, 14:57

Merci pour tes précieuses réponses.

J'arrive donc à afficher un .csv avec les colonnes bien comme il faut, par contre, je ne trouve pas l'option dans Excel permettant de convertir le texte en colonne ?

 

Écrit par : baron 26 Oct 2022, 15:23

Si je ne me trompe, une fois le document ouvert, tu peux procéder ainsi, en choisissant Tab comme séparateur :
• https://support.microsoft.com/fr-fr/office/fractionner-du-texte-en-plusieurs-colonnes-à-l-aide-de-l-assistant-conversion-30b14928-5550-41f5-97ca-7a3e9c363ed7

Écrit par : PBell 26 Oct 2022, 17:26

Merci Baron !

J'ajoute que, une fois le dialogue de conversion Excel ouvert, en général les options sont pré-sélectionnées par défaut: délimité, tabulation comme séparateur, colonnes sélectionnées (A:A dans notre cas) et colonnes de sortie (A à xx).
Cela permet d'utiliser la fonction et de tout valider avec simplement 3 return.

Si tu as une ancienne version d'Excel (2011), la conversion est dans le menu Données.

Cordialement

Écrit par : davdenice 26 Oct 2022, 17:28

Merci pour votre aide à tous.

Cependant j'ai utilisé Numbers pour convertir le .csv en format Numbers.

Écrit par : PBell 26 Oct 2022, 17:50

Une idée, juste comme ça, pourquoi ne pas supprimer l'écriture en csv et mettre directement les données dans une feuille Excel ??!

Tu supprimes dans le script tout ce qui est après la ligne qui enregistre en csv:

CODE
if monTexte is "" then return -- rien à enregistrer


et tu remplaces par les lignes ci-dessous qui ouvrent Excel, créent un fichier Excel avec le résultat directement dans les colonnes !!
CODE
set the clipboard to monTexte
tell application "Microsoft Excel"
    set monDoc to make new workbook -- create new workbook
    tell active sheet of monDoc to paste special range "A1"
end tell


Désolé, je n'y avais pas pensé plus tôt sad.gif

Écrit par : davdenice 26 Oct 2022, 19:57

Citation (PBell @ 26 Oct 2022, 18:50) *
Une idée, juste comme ça, pourquoi ne pas supprimer l'écriture en csv et mettre directement les données dans une feuille Excel ??!

Tu supprimes dans le script tout ce qui est après la ligne qui enregistre en csv:
Code
if monTexte is "" then return -- rien à enregistrer


et tu remplaces par les lignes ci-dessous qui ouvrent Excel, créent un fichier Excel avec le résultat directement dans les colonnes !!
Code
set the clipboard to monTexte
tell application "Microsoft Excel"
    set monDoc to make new workbook -- create new workbook
    tell active sheet of monDoc to paste special range "A1"
end tell


Désolé, je n'y avais pas pensé plus tôt sad.gif


Bonsoir, et merci pour ta contribution smile.gif

J'ai ajouté ton morceau de code, ce qui donne :

Code
set MDate to (current date) - days * 1095 -- défini hier comme date de recherche
set AppleScript's text item delimiters to tab -- défini le séparateur des adresses
set heurelimite to 20 -- défini l'heure à partir de laquelle il faut lister
set monTexte to ""
tell application "Mail"
    set maListe to (every message in sent mailbox whose date sent > MDate)
    repeat with unMessage in maListe
        set maDate to date sent of unMessage
        if hours of maDate ≥ 20 then
            set mesDestinataires to (address of recipients of unMessage) as rich text
            set monTexte to monTexte & tab & maDate & tab & subject of unMessage & tab & mesDestinataires & tab & return
        end if
    end repeat
end tell
if monTexte is "" then return -- rien à enregistrer

set the clipboard to monTexte
tell application "Microsoft Excel"
    set monDoc to make new workbook -- create new workbook
    tell active sheet of monDoc to paste special range "A1"
end tell


Ca ouvre bien une feuille Excel, mais elle est vierge sad.gif

Écrit par : PBell 27 Oct 2022, 08:45

Curieux, cela fonctionne parfaitement chez moi, et je pense que c'est sans doute du à ta version Excel qui est différente.
J'ai une veille version (version 2011, 14.0.0). Il se peut qu'une version plus récente ne gère pas correctement ou différemment la fonction "paste" = coller.
Quelle version Excel as tu ?

Peux tu vérifier d'abord que ton clipboard contient bien ce qui doit être collé.
Pour ce faire, lance le script et, une fois la feuille Excel ouverte, sélectionne la cellule A1 de la feuille et tape Cmd V (coller) sur le clavier.
Cela devrait ajouter dans la feuille Excel la liste des emails.

Si c'est le cas, c'est que le clipboard est bien assigné et que ce n'est que le paste qui ne fonctionne pas.
Donne moi ta version d'Excel et je chercherai sur le net si Microsoft a changé quelque chose. Pas d'inquiétude, si c'est Excel, je te donnerai une ligne de script qui simule ce cmd V !

Si cmd V ne fonctionne pas, c'est que la liste n'est pas insérée dans le clipboard. Dans ce cas, je reste très perplexe !!

Cordialement

PS: il se peut aussi que ta version MacOS + Excel demande que Excel soit activé au premier plan pour faire le paste. On verra en fonction de tes réponses.

Écrit par : davdenice 27 Oct 2022, 09:40

Alors j'utilise la version 16.66.1 d'Excel sous macOS Ventura 13.0.

J'ai activé Stage Manager, je vais voir ce que ça donne une fois désactivé.

EDIT :

J'ai fait les test avec et sans Stage Manager, ça ne fonctionne pas.

Par contre quand je fait +V en case A1 dans la feuille Excel qui s'affiche ça fonctionne, les dates et les données sont bien collées.

Je formate ensuite les cellules de la colonne "dates" en " lundi 1 janvier 2022". Par contre je n'arrive pas à faire le tri, il se fait par ordre alphabétique des jours.

J'ai également tenté de remplacer "Microsoft Excel" par Numbers, cela ne fonctionne pas, erreur de syntaxe.

Écrit par : Zeltron54 27 Oct 2022, 09:48

Bonjour,
Au vu de toutes tes demandes, j'ai fait un script qui te demande le nombre de jours et l'heure limite, puis qui ouvre "Numbers" qui met le résultat dans une feuille et à la fin qui tri par date

Cela pourra te donner des idées pour le faire
Tu auras le choix entre excel et numbers...

Code
display dialog "Nombre de jours pour la recherche ?" default answer "1095"
set MDate to (current date) - days * (text returned of result) -- défini date de recherche
display dialog "Début Heure de recherche ?" default answer "20"
set heurelimite to text returned of result
set monTexte to ""
set AppleScript's text item delimiters to {" "}
tell application "Numbers"
    activate
    set newClasseur to make new document at front
    tell the first table of the active sheet of document 1
        set the value of cell "a1" to "Le jour"
        set the value of cell "b1" to "La date"
        set the value of cell "c1" to "Heure envoi"
        set the value of cell "D1" to "Objet"
        set the value of cell "e1" to "Le destinataire"
    end tell
end tell
set ligne to 2
tell application "Mail"
    set maListe to (every message in sent mailbox whose date sent > MDate)
    repeat with unMessage in maListe
        set maDate to date sent of unMessage
        if hours of maDate ≥ heurelimite then
            set heure to hours of maDate
            set mesDestinataires to (address of recipients of unMessage) as rich text
            set ladate to (short date string of maDate)
            set madatetexte to maDate as string
            set lejour to text item 1 of madatetexte
            set objet to subject of unMessage
            
            tell application "Numbers"
                activate
                tell the first table of the active sheet of document 1
                    set the value of cell ("a" & ligne) to lejour
                    set the value of cell ("b" & ligne) to ladate
                    set the value of cell ("c" & ligne) to heure
                    set the value of cell ("d" & ligne) to objet
                    set the value of cell ("e" & ligne) to mesDestinataires
                    make new row
                end tell
                
            end tell
            set ligne to ligne + 1
            
        end if
    end repeat
end tell

tell application "Numbers"
    activate
    tell the first table of the active sheet of document 1
        sort by column "b" direction descending --in rows LaSelection
    end tell
end tell
tell application "Finder"
    activate
    (display dialog ("waouou ... Ca y est c'est fait !") buttons {"Salut !"})
end tell

Écrit par : davdenice 27 Oct 2022, 10:52

Citation (Zeltron54 @ 27 Oct 2022, 10:48) *
Bonjour,
Au vu de toutes tes demandes, j'ai fait un script qui te demande le nombre de jours et l'heure limite, puis qui ouvre "Numbers" qui met le résultat dans une feuille et à la fin qui tri par date

Cela pourra te donner des idées pour le faire
Tu auras le choix entre excel et numbers...

Code
display dialog "Nombre de jours pour la recherche ?" default answer "1095"
set MDate to (current date) - days * (text returned of result) -- défini date de recherche
display dialog "Début Heure de recherche ?" default answer "20"
set heurelimite to text returned of result
set monTexte to ""
set AppleScript's text item delimiters to {" "}
tell application "Numbers"
    activate
    set newClasseur to make new document at front
    tell the first table of the active sheet of document 1
        set the value of cell "a1" to "Le jour"
        set the value of cell "b1" to "La date"
        set the value of cell "c1" to "Heure envoi"
        set the value of cell "D1" to "Objet"
        set the value of cell "e1" to "Le destinataire"
    end tell
end tell
set ligne to 2
tell application "Mail"
    set maListe to (every message in sent mailbox whose date sent > MDate)
    repeat with unMessage in maListe
        set maDate to date sent of unMessage
        if hours of maDate ≥ heurelimite then
            set heure to hours of maDate
            set mesDestinataires to (address of recipients of unMessage) as rich text
            set ladate to (short date string of maDate)
            set madatetexte to maDate as string
            set lejour to text item 1 of madatetexte
            set objet to subject of unMessage
            
            tell application "Numbers"
                activate
                tell the first table of the active sheet of document 1
                    set the value of cell ("a" & ligne) to lejour
                    set the value of cell ("b" & ligne) to ladate
                    set the value of cell ("c" & ligne) to heure
                    set the value of cell ("d" & ligne) to objet
                    set the value of cell ("e" & ligne) to mesDestinataires
                    make new row
                end tell
                
            end tell
            set ligne to ligne + 1
            
        end if
    end repeat
end tell

tell application "Numbers"
    activate
    tell the first table of the active sheet of document 1
        sort by column "b" direction descending --in rows LaSelection
    end tell
end tell
tell application "Finder"
    activate
    (display dialog ("waouou ... Ca y est c'est fait !") buttons {"Salut !"})
end tell


Oh ! Merci ! c'est géant ce que tu as réalisé ohmy.gif

Merci beaucoup pour ton aide !!!

J'essaie d'obtenir l'affichage des minutes en plus des heures, mais je ne connais pas la formule. J'ai essayé de remplacer hours par time mais ce n'est pas ça. J'ai donc intercalé après les heures une colonne "minutes" pour palier au problème.


Écrit par : Zeltron54 27 Oct 2022, 11:26

Ok pour l'affichage heure minute seconde voilà le script modifié:

Code
display dialog "Nombre de jours pour la recherche ?" default answer "1095"
set MDate to (current date) - days * (text returned of result) -- défini hier comme date de recherche
display dialog "Début Heure de recherche ?" default answer "20"
set heurelimite to text returned of result
set monTexte to ""
set AppleScript's text item delimiters to {" "}
tell application "Numbers"
    activate
    set newClasseur to make new document at front
    tell the first table of the active sheet of document 1
        set the value of cell "a1" to "Le jour"
        set the value of cell "b1" to "La date"
        set the value of cell "c1" to "Heure envoi"
        set the value of cell "D1" to "Objet"
        set the value of cell "e1" to "Le destinataire"
    end tell
end tell
set ligne to 2
tell application "Mail"
    set maListe to (every message in sent mailbox whose date sent > MDate)
    repeat with unMessage in maListe
        set maDate to date sent of unMessage
        if hours of maDate ≥ heurelimite then
            set mesDestinataires to (address of recipients of unMessage) as rich text
            set Ladate to (short date string of maDate)
            set madatetexte to maDate as string
            set heure to last text item of madatetexte
            set lejour to text item 1 of madatetexte
            set objet to subject of unMessage
            
            tell application "Numbers"
                activate
                tell the first table of the active sheet of document 1
                    set the value of cell ("a" & ligne) to lejour
                    set the value of cell ("b" & ligne) to Ladate
                    set the value of cell ("c" & ligne) to heure
                    set the value of cell ("d" & ligne) to objet
                    set the value of cell ("e" & ligne) to mesDestinataires
                    make new row
                end tell
                
            end tell
            set ligne to ligne + 1
            
        end if
    end repeat
end tell

tell application "Numbers"
    activate
    tell the first table of the active sheet of document 1
        sort by column "b" direction descending --in rows LaSelection
    end tell
end tell
tell application "Finder"
    activate
    (display dialog ("waouou ... Ca y est c'est fait !") buttons {"Salut !"})
end tell

Écrit par : PBell 27 Oct 2022, 12:31

Merci pour la version Excel.
J'ai effectivement cherché sur le net et j'ai trouvé quelques sites indiquant que la commande "Paste Special" ne fonctionnait plus depuis Excel 2016. (voir ici https://forum.latenightsw.com/t/paste-special-in-excel-2016-16-16-27-broken/3901)

Je doute que Microsoft ne corrige cela un jour, donc, la porte étant fermée, nous allons passer par la fenêtre tongue.gif

Pour ce faire, nous allons simuler la frappe clavier cmd v sur l'application Excel, comme si tu utilisais ces touches sur ton clavier.
L’inconvénient de cette méthode (pour les puristes, c'est du GUI scripting) est que tu ne dois pas interférer avant la fin du script, donc pas toucher le clavier.

Voici la nouvelle partie du script qui remplace les lignes situées après "Set the clipboard to monTexte":

CODE
tell application "Microsoft Excel"
    set monDoc to make new workbook -- create new workbook
    tell active sheet of monDoc
        activate
        select range "A1"
    end tell
end tell
tell application "System Events" to tell application process "Microsoft Excel" to keystroke "v" using command down


Cela devrait, cette fois, passer outre le bug Excel.

Quant à la question du tri, en principe les dates dans Excel peuvent être triées selon leurs valeurs et pas leur format d'affichage.
Cependant, c'est peut être une subtilité de la version 2016 sur Mac (pas sur Windows !)....
Il est aussi possible que les dates, dans tes préférences Mac ou Excel, soient au format mm/jj/aaaa (mois/jour/année) alors que Applescript te donne un format jj/mm/aaaa (inversion jour et mois - valide pour le format français).
Je sais que le Canada préconise un format différent (aaaa/mm/jj) justement pour éviter les confusion entre jj/mm/aaaa et mm/jj/aaaa

Il faut que tu vérifie tes préférences de gestion de dates (Apple Système Préférences et Excel).

Enfin, dernière hypothèse, c'est que ta conversion de date convertisse les dates en string dans Excel. Je n'ai jamais eu ce cas malgré des années sur Excel, mais....!!?
Donc je te suggère de faire d'abord le tri, puis la conversion de format de dd/mm/aaaa en format string.

Cordialement

PS: Je peux aussi essayer de compléter le script pour faire le tri par date dans Excel...ascendant ou descendant ?

Écrit par : davdenice 27 Oct 2022, 13:02

Je ne sais quoi dire à part merci beaucoup pour toute cette aide 👍

Si possible dans l’ordre croissant ?

Mais perso si c’est possible d’utiliser Numbers je préfère, mais sinon c’est pas grave on reste sur Excel.
J’ai tenté de remplacer l’application « Mail » par Outlook ou Microsoft Outlook mais cela ne fonctionne pas.

Écrit par : PBell 27 Oct 2022, 13:45

Pour le tri Excel, il semble que ici encore, Microsoft n'ai pas été très bon sur le dictionnaire Applescript...Il y a bien des objets "sort" et une fonction "add sortfield" mais qui ne semble pas fonctionner correctement... donc impasse !

Si tu préfère Numbers, désolé, je n'utilise que Excel. Mais Zeltron a fourni aujourd'hui une version avec Numbers.

Quant au changement de Mail par Outlook, c'est la première partie du script.
Il faut savoir que chaque application dispose de son propre dictionnaire de commandes scriptables: les commandes Mail sont très différentes de celles de Outlook.
En conséquence, il ne suffit pas de changer "Mail" par "Outlook", il faut ré-écrire les instructions qui permettent de récupérer et filtrer les emails en utilisant le dictionnaire Outlook.

Cordialement

Écrit par : Zeltron54 27 Oct 2022, 14:08

Je t'ai réécris le script, en évitant de l'écrire ligne par ligne, mais en créant (comme PBell) un fichier "emails_envoyés.txt" sur le breau, puis en l'important dans numbers et le trier par date du plus récent au plus ancien si tu veux le contraire il faut remplacer "descending" par "ascending".
Ce script sera plus rapide.
Tu auras le fichier texte sur le bureau et une page dans numbers.

Code
display dialog "Nombre de jours pour la recherche ?" default answer "1095"
set MDate to (current date) - days * (text returned of result) -- défini hier comme date de recherche
display dialog "Début Heure de recherche ?" default answer "20"
set heurelimite to text returned of result
set monTexte to ""
set AppleScript's text item delimiters to {" "}

tell application "Mail"
    set maListe to (every message in sent mailbox whose date sent > MDate)
    repeat with unMessage in maListe
        set maDate to date sent of unMessage
        if hours of maDate ≥ heurelimite then
            set mesDestinataires to (address of recipients of unMessage) as rich text
            set Ladate to (short date string of maDate)
            set madatetexte to maDate as string
            set heure to last text item of madatetexte
            set lejour to text item 1 of madatetexte
            set objet to subject of unMessage
            
            set monTexte to monTexte & lejour & tab & Ladate & tab & heure & tab & objet & tab & mesDestinataires & tab & return
        end if
    end repeat
end tell

set Fichier_Log to (((path to desktop) as text) & "emails_envoyés.txt")
try
    do shell script "touch " & (quoted form of (POSIX path of Fichier_Log))
    do shell script "echo " & (quoted form of monTexte) & " >> " & (quoted form of (POSIX path of Fichier_Log))
end try
set chemin to (path to desktop folder as text) & "emails_envoyés.txt" as alias
tell application "Numbers"
    activate
    open chemin
    tell the first table of the active sheet of document 1
                set format of column "B" to date and time
        sort by column "b" direction descending --in rows LaSelection
    end tell
end tell

tell application "Finder"
    activate
    (display dialog ("waouou ... Ca y est c'est fait !") buttons {"Salut !"})
end tell

Écrit par : davdenice 27 Oct 2022, 15:56

Citation (PBell @ 27 Oct 2022, 14:45) *
Pour le tri Excel, il semble que ici encore, Microsoft n'ai pas été très bon sur le dictionnaire Applescript...Il y a bien des objets "sort" et une fonction "add sortfield" mais qui ne semble pas fonctionner correctement... donc impasse !

Si tu préfère Numbers, désolé, je n'utilise que Excel. Mais Zeltron a fourni aujourd'hui une version avec Numbers.

Quant au changement de Mail par Outlook, c'est la première partie du script.
Il faut savoir que chaque application dispose de son propre dictionnaire de commandes scriptables: les commandes Mail sont très différentes de celles de Outlook.
En conséquence, il ne suffit pas de changer "Mail" par "Outlook", il faut ré-écrire les instructions qui permettent de récupérer et filtrer les emails en utilisant le dictionnaire Outlook.

Cordialement


Merci beaucoup pour tes précieuses précisions.

Écrit par : davdenice 27 Oct 2022, 16:33

Citation (Zeltron54 @ 27 Oct 2022, 15:08) *
Je t'ai réécris le script, en évitant de l'écrire ligne par ligne, mais en créant (comme PBell) un fichier "emails_envoyés.txt" sur le breau, puis en l'important dans numbers et le trier par date du plus récent au plus ancien si tu veux le contraire il faut remplacer "descending" par "ascending".
Ce script sera plus rapide.
Tu auras le fichier texte sur le bureau et une page dans numbers.

Code
display dialog "Nombre de jours pour la recherche ?" default answer "1095"
set MDate to (current date) - days * (text returned of result) -- défini hier comme date de recherche
display dialog "Début Heure de recherche ?" default answer "20"
set heurelimite to text returned of result
set monTexte to ""
set AppleScript's text item delimiters to {" "}

tell application "Mail"
    set maListe to (every message in sent mailbox whose date sent > MDate)
    repeat with unMessage in maListe
        set maDate to date sent of unMessage
        if hours of maDate ≥ heurelimite then
            set mesDestinataires to (address of recipients of unMessage) as rich text
            set Ladate to (short date string of maDate)
            set madatetexte to maDate as string
            set heure to last text item of madatetexte
            set lejour to text item 1 of madatetexte
            set objet to subject of unMessage
            
            set monTexte to monTexte & lejour & tab & Ladate & tab & heure & tab & objet & tab & mesDestinataires & tab & return
        end if
    end repeat
end tell

set Fichier_Log to (((path to desktop) as text) & "emails_envoyés.txt")
try
    do shell script "touch " & (quoted form of (POSIX path of Fichier_Log))
    do shell script "echo " & (quoted form of monTexte) & " >> " & (quoted form of (POSIX path of Fichier_Log))
end try
set chemin to (path to desktop folder as text) & "emails_envoyés.txt" as alias
tell application "Numbers"
    activate
    open chemin
    tell the first table of the active sheet of document 1
                set format of column "B" to date and time
        sort by column "b" direction descending --in rows LaSelection
    end tell
end tell

tell application "Finder"
    activate
    (display dialog ("waouou ... Ca y est c'est fait !") buttons {"Salut !"})
end tell


Merci beaucoup pour ce script ! c'est top !
Là je télécharge 15 Go de mails, heureusement que j'ai la fibre, et hâte de tester tout ça !

Écrit par : PBell 27 Oct 2022, 17:39

@ Zeltron,
Juste une dernière précision pour la gestion de l'heure: tu peux utiliser la fonction "time string", équivalente pour le temps à la fonction "short date string" pour la date.

Ainsi l'instruction:

CODE
set monTexte to monTexte & (short date string of maDate) & tab & (time string of maDate) & tab & subject of unMessage & tab & mesDestinataires & return


te donnera directement la date jj/mm/aaaa en colonne A, et hh:mm:ss en colonne B avec une vraie valeur de temps dans Excel (et je suppose dans Numbers).
C'est le cas avec la fonction copié/collé, et cela devrait aussi fonctionner avec le fichier txt.


Si, de plus, tu supprimes le caractère tab entre la date et le temps, le tout sera collé dans Excel sous un véritable format de date/time complet,...donc plus simple pour le tri que des colonnes dates et temps séparées.

Cordialement

Écrit par : Zeltron54 27 Oct 2022, 19:52

@ PBell

Merci pour l'info "time string" je ne connaissais pas !

Mais bon, à l'importation dans numbers du fichier texte je formate la colonne B en date, puis je tri sur la date !
Le "time" est en colonne C et reste au format texte! Il me semble qu'il avait demandé de mettre les heures et minute dans une colonne séparée.

En le faisant ligne par ligne numbers le reconnaissait comme date mes le traitement était beaucoup trop long...

S'il a besoin de changer il fera la demande ! biggrin.gif

Encore merci pour toutes ces infos !
Bonne soirée.

Écrit par : davdenice 27 Oct 2022, 20:00

Une dernière question :

si je veux afficher non seulement les messages envoyés mais également ceux reçus, je dois modifier quoi dans le code ?
J'ai essayé mailbox tout court, all mailbox, en remplacement de sent mailbox, mais j'ai des messages d'erreur.

Écrit par : Zeltron54 27 Oct 2022, 20:57

Bonsoir,

J'ai ajouter dans le code l'affichage dans le fichier numbers d'une ligne de titre !
le nouveau code:

Code
display dialog "Nombre de jours pour la recherche ?" default answer "1095"
set MDate to (current date) - days * (text returned of result) -- défini hier comme date de recherche
display dialog "Début Heure de recherche ?" default answer "20"
set heurelimite to text returned of result
set monTexte to "Le jour" & tab & "La date" & tab & "Heure d'envoi" & tab & "Objet " & tab & " Le destinataire" & return
set AppleScript's text item delimiters to {" "}

tell application "Mail"
    set maListe to (every message in sent mailbox whose date sent > MDate)
    repeat with unMessage in maListe
        set maDate to date sent of unMessage
        if hours of maDate ≥ heurelimite then
            set mesDestinataires to (address of recipients of unMessage) as rich text
            set Ladate to (short date string of maDate)
            set madatetexte to maDate as string
            set heure to last text item of madatetexte
            set lejour to text item 1 of madatetexte
            set objet to subject of unMessage
            
            set monTexte to monTexte & lejour & tab & Ladate & tab & heure & tab & objet & tab & mesDestinataires & tab & return
        end if
    end repeat
end tell

set Fichier_Log to (((path to desktop) as text) & "emails_envoyés.txt")
try
    do shell script "touch " & (quoted form of (POSIX path of Fichier_Log))
    do shell script "echo " & (quoted form of monTexte) & " >> " & (quoted form of (POSIX path of Fichier_Log))
end try
set chemin to (path to desktop folder as text) & "emails_envoyés.txt" as alias
tell application "Numbers"
    activate
    open chemin
    tell the first table of the active sheet of document 1
        set format of column "B" to date and time
        sort by column "b" direction descending --remplacer decending par ascending pour tri inverse
    end tell
end tell

tell application "Finder"
    activate
    (display dialog ("waouou ... Ca y est c'est fait !") buttons {"Salut !"})
end tell


Pour faire la même chose sur la boite de réception le code devient:

Code
display dialog "Nombre de jours pour la recherche ?" default answer "1095"
set MDate to (current date) - days * (text returned of result) -- défini hier comme date de recherche
display dialog "Début Heure de recherche ?" default answer "20"
set heurelimite to text returned of result
set monTexte to "Le jour" & tab & "La date" & tab & "Heure de réception" & tab & "Objet " & tab & "Expéditeur" & return
set AppleScript's text item delimiters to {" "}

tell application "Mail"
    set maListe to (every message in inbox whose date received > MDate)
    repeat with unMessage in maListe
        set maDate to date received of unMessage
        if hours of maDate ≥ heurelimite then
            set mesDestinataires to (sender of unMessage) as rich text
            set Ladate to (short date string of maDate)
            set madatetexte to maDate as string
            set heure to last text item of madatetexte
            set lejour to text item 1 of madatetexte
            set objet to subject of unMessage
            
            set monTexte to monTexte & lejour & tab & Ladate & tab & heure & tab & objet & tab & mesDestinataires & tab & return
        end if
    end repeat
end tell

set Fichier_Log to (((path to desktop) as text) & "emails_recus.txt")
try
    do shell script "touch " & (quoted form of (POSIX path of Fichier_Log))
    do shell script "echo " & (quoted form of monTexte) & " >> " & (quoted form of (POSIX path of Fichier_Log))
end try
set chemin to (path to desktop folder as text) & "emails_recus.txt" as alias
tell application "Numbers"
    activate
    open chemin
    tell the first table of the active sheet of document 1
        set format of column "B" to date and time
        sort by column "b" direction descending --remplacer decending par ascending pour tri inverse
    end tell
end tell

tell application "Finder"
    activate
    (display dialog ("waouou ... Ca y est c'est fait !") buttons {"Salut !"})
end tell


Dis moi si cela fonctionne comme tu veux !

Écrit par : davdenice 31 Oct 2022, 18:32

Hello,

Pour le script qui affiche les messages de la boite de réception, j'ai un message d'erreur :

Code
error "Erreur dans Mail : Délai dépassé pour un AppleEvent." number -1712

Écrit par : Zeltron54 31 Oct 2022, 18:40

Je ne vois pas !
Je viens de retester chez moi, pas de message d'erreur !

Écrit par : davdenice 31 Oct 2022, 20:00

Merci pour tes tests.
J'ai essayé avec 4000 jours et 5000 jours, j'ai un message d'erreur, mais bon c est pas grave.

Serait-il possible d'avoir un script qui me sorte une feuille number incluant tous les mails reçus et envoyés par Mail depuis le 01/04/2010 ?

Avec une colonne indiquant expéditeur et une colonne indiquant destinataire ?

Je n'arrive pas à fusionner tes 2 scripts pour en faire 1 seul : je colle donc le premier tableau dans le second , mais je suis obligé de colorier le texte des mail expédiés en rouge pour les différencier.

Écrit par : Zeltron54 31 Oct 2022, 20:43

Pour le message d'erreur,

Lorsque le script à terminé il met une boite de dialogue avec ""waouou ... Ca y est c'est fait !".
Il faut que tu fermes ce dialogue dans les 2 minutes sinon une erreur est générée car le temps d'attente est trop long. (cela ne change en rien le résultat)

Pour réunir les sortie des messages envoyés et des messages reçus,

Après l'exécution des 2 scripts tu as donc une fenêtre numbers avec les messages envoyés et une fenêtre avec les messages reçus.

Il devrait suffire de mettre les messages envoyés dans la même fenêtre que les messages reçu et ça dans une deuxième feuille.
Une feuille pour les envoyés et une feuille pour les reçus.
Pour faire cela cliquer sur l'onglet de la feuille --> copier la feuille,.... aller sur l'autre fenêtre, un clic sur l'onglet de la feuille--> coller la feuille, une deuxième feuille est créée automatiquement.
Tu auras tout dans le même document...

EDIT: n'oublies pas de supprimer les fichiers texte qui sont sur le bureau, avant une deuxième utilisation des scripts !

EDIT 2 : pour éviter le message d'erreur créé par le temps d'attente trop long de la fenêtre de fin du travail, tu remplaces la ligne :

Code
(display dialog ("waouou ... Ca y est c'est fait !") buttons {"Salut !"})

par :
Code
display dialog ("waouou ... Ca y est c'est fait !") buttons {"Salut !"} giving up after 120

Qui ferme le dialogue après 2 minutes.

Écrit par : davdenice 2 Nov 2022, 18:51

Bonjour,

J'arrive à récupérer une feuille Numbers contenant des emails envoyés.

Est-ce possible d'écrire un script qui filtre cette feuille Numbers en fonction de certains termes ? Par exemple, dans le script j'écris "coco@<spam>" et ça supprime la ligne où "coco@<spam>" figure ?

Merci.

Sinon, j'ai un problème : j'ai importé dans mail la boîte mail de 15 go dont je désirais extraire les emails envoyés.

Or, depuis que j'ai ajouté ce nouveau compte dans mail, plus aucun script ne fonctionne, j'ai toujours des messages d'erreur sad.gif

Même les tous premiers scripts que vous m'avez généreusement offert ne renvoient des messages d'erreur sad.gif

Est-ce du à un volume trop important de données à traiter ?

Merci pour votre aide.

Le message qui s'affiche avec tous vos scripts est :

"Délai dépassé pour un Apple Event"

Le problème viendrait de Mail qui ne peut pas gérer trop d'e-mails ?

J'ai aussi la suite Office sur mon Mac, pensez-vous qu'utiliser un script qui interroge Outlook et qui renvoie une réponse sous forme de feuille Excel sera plus fiable ?

 

Écrit par : Zeltron54 2 Nov 2022, 20:23

Citation
Est-ce possible d'écrire un script qui filtre cette feuille Numbers en fonction de certains termes ? Par exemple, dans le script j'écris "coco@<spam>" et ça supprime la ligne où "coco@<spam>" figure ?


Il serait plus simple de saisir le terme à filtrer dans le script de recherche des mails pour ne pas les inclure dans le texte de sortie et donc de la feuille numbers.

Pour ton message d'erreur, rien à voir avec le nombre de mails, la recherche se faisant sur la boite du compte par défaut, je suppose que le script cherche une boite d'envoi "sent mailbox" sans la trouver et fini par te mettre ce message.

Écrit par : davdenice 3 Nov 2022, 00:58

Citation (Zeltron54 @ 2 Nov 2022, 20:23) *
Citation
Est-ce possible d'écrire un script qui filtre cette feuille Numbers en fonction de certains termes ? Par exemple, dans le script j'écris "coco@<spam>" et ça supprime la ligne où "coco@<spam>" figure ?


Il serait plus simple de saisir le terme à filtrer dans le script de recherche des mails pour ne pas les inclure dans le texte de sortie et donc de la feuille numbers.

Pour ton message d'erreur, rien à voir avec le nombre de mails, la recherche se faisant sur la boite du compte par défaut, je suppose que le script cherche une boite d'envoi "sent mailbox" sans la trouver et fini par te mettre ce message.


Ok, c'est bon, j'ai fait une recherche boite d'envoi par boite d'envoi, je devais les spécifier sinon le script ne trouvait rien. Merci beaucoup.

Écrit par : Zeltron54 3 Nov 2022, 07:51

Bonjour,

Ok pour l'erreur !

Pour les filtres, dis moi si il faut inclure dans le script, sinon tu as la possibilité dans Numbers de filtrer ...
sélectionner la colonne "Le Destinataire" puis En haut à droite --> organiser, -->Filtrer --> ajouter un filtre --> "le destinataire" --> Texte --> ne contient pas --> tu entres ton texte à filtrer...

Propulsé par Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)