affichage des heures d'envoi des mails via AppleScript |
Bienvenue invité ( Connexion | Inscription )
affichage des heures d'envoi des mails via AppleScript |
21 Oct 2022, 16:20
Message
#1
|
|
Adepte de Macbidouille Groupe : Membres Messages : 130 Inscrit : 21 Jan 2007 Membre no 78 760 |
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. -------------------- Ancien matériel possedé : MacBook noir Core 2 Duo 2 gHz RAM 4GB HD 500GB, MacBook blanc Core 2 Duo 2,2 gHz RAM 4GB SSD 128GB, iPod Mini Alu 4GB, iPhone 3G Black 16GB, Elgato EyeTV, Elgato Turbo.264, iPhone 4 16GB , Phone 4S 16GB, iPhone SE 32GB, HD externe LaCie 120GB.
Actuellement toujours chez : MacBook Air M1 8GB RAM 256GB SSD gris sidéral, iPad 9 64 GB gris sidéral, iPhone 11 64GB jaune, Apple Watch SE 2020, Apple TV 4K, SSD externe Crucial 1TB. |
|
|
21 Oct 2022, 22:08
Message
#2
|
|
Adepte de Macbidouille Groupe : Membres Messages : 176 Inscrit : 15 Mar 2008 Lieu : Lorraine Membre no 110 156 |
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 Ce message a été modifié par Zeltron54 - 22 Oct 2022, 08:13. -------------------- Imac 27 I7 Fusion drive fin 2013 Ram 8Go Mac OS X (10.14.6)
MacBook Pro 15 pouces mi-2012 8Go Ram Mac OS X (10.14.6) Imac 24 M3 2023 Ram 24Go macOS Sonoma 14.3 |
|
|
22 Oct 2022, 08:17
Message
#3
|
|
Macbidouilleur de bronze ! Groupe : Membres Messages : 265 Inscrit : 7 Dec 2013 Lieu : Ile de France Membre no 188 169 |
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 -------------------- iiMac 24 M1 16Go/1To 13.5.1
iMac 27 i5 3,1GHz 8Go/1To 10.11.6 / 10.6.8 iMac 20 C.Duo 2,6Ghz 8Go/350Go 10.6.8 / 10.11 Mini C.Duo 2,0Ghz 2Go/500Go 10.6.8 |
|
|
22 Oct 2022, 08:47
Message
#4
|
|
Adepte de Macbidouille Groupe : Membres Messages : 130 Inscrit : 21 Jan 2007 Membre no 78 760 |
Merci pour vos réponses super rapides, je ne m'attendais pas à autant de réactivité
Je vais tester vos scripts, encore merci ! -------------------- Ancien matériel possedé : MacBook noir Core 2 Duo 2 gHz RAM 4GB HD 500GB, MacBook blanc Core 2 Duo 2,2 gHz RAM 4GB SSD 128GB, iPod Mini Alu 4GB, iPhone 3G Black 16GB, Elgato EyeTV, Elgato Turbo.264, iPhone 4 16GB , Phone 4S 16GB, iPhone SE 32GB, HD externe LaCie 120GB.
Actuellement toujours chez : MacBook Air M1 8GB RAM 256GB SSD gris sidéral, iPad 9 64 GB gris sidéral, iPhone 11 64GB jaune, Apple Watch SE 2020, Apple TV 4K, SSD externe Crucial 1TB. |
|
|
22 Oct 2022, 08:52
Message
#5
|
|
Adepte de Macbidouille Groupe : Membres Messages : 176 Inscrit : 15 Mar 2008 Lieu : Lorraine Membre no 110 156 |
@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 ! -------------------- Imac 27 I7 Fusion drive fin 2013 Ram 8Go Mac OS X (10.14.6)
MacBook Pro 15 pouces mi-2012 8Go Ram Mac OS X (10.14.6) Imac 24 M3 2023 Ram 24Go macOS Sonoma 14.3 |
|
|
22 Oct 2022, 09:24
Message
#6
|
|
Adepte de Macbidouille Groupe : Membres Messages : 130 Inscrit : 21 Jan 2007 Membre no 78 760 |
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 ?
-------------------- Ancien matériel possedé : MacBook noir Core 2 Duo 2 gHz RAM 4GB HD 500GB, MacBook blanc Core 2 Duo 2,2 gHz RAM 4GB SSD 128GB, iPod Mini Alu 4GB, iPhone 3G Black 16GB, Elgato EyeTV, Elgato Turbo.264, iPhone 4 16GB , Phone 4S 16GB, iPhone SE 32GB, HD externe LaCie 120GB.
Actuellement toujours chez : MacBook Air M1 8GB RAM 256GB SSD gris sidéral, iPad 9 64 GB gris sidéral, iPhone 11 64GB jaune, Apple Watch SE 2020, Apple TV 4K, SSD externe Crucial 1TB. |
|
|
22 Oct 2022, 12:25
Message
#7
|
|
Macbidouilleur de bronze ! Groupe : Membres Messages : 265 Inscrit : 7 Dec 2013 Lieu : Ile de France Membre no 188 169 |
Bonjour Davdenice,
Je suggère le site Apple (en anglais !) pour commencer : AppleScript 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 !! ...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 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 -------------------- iiMac 24 M1 16Go/1To 13.5.1
iMac 27 i5 3,1GHz 8Go/1To 10.11.6 / 10.6.8 iMac 20 C.Duo 2,6Ghz 8Go/350Go 10.6.8 / 10.11 Mini C.Duo 2,0Ghz 2Go/500Go 10.6.8 |
|
|
22 Oct 2022, 13:02
Message
#8
|
|
Adepte de Macbidouille Groupe : Membres Messages : 130 Inscrit : 21 Jan 2007 Membre no 78 760 |
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. -------------------- Ancien matériel possedé : MacBook noir Core 2 Duo 2 gHz RAM 4GB HD 500GB, MacBook blanc Core 2 Duo 2,2 gHz RAM 4GB SSD 128GB, iPod Mini Alu 4GB, iPhone 3G Black 16GB, Elgato EyeTV, Elgato Turbo.264, iPhone 4 16GB , Phone 4S 16GB, iPhone SE 32GB, HD externe LaCie 120GB.
Actuellement toujours chez : MacBook Air M1 8GB RAM 256GB SSD gris sidéral, iPad 9 64 GB gris sidéral, iPhone 11 64GB jaune, Apple Watch SE 2020, Apple TV 4K, SSD externe Crucial 1TB. |
|
|
22 Oct 2022, 13:18
Message
#9
|
|
Macbidouilleur de bronze ! Groupe : Membres Messages : 265 Inscrit : 7 Dec 2013 Lieu : Ile de France Membre no 188 169 |
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 Ce message a été modifié par PBell - 22 Oct 2022, 13:19. -------------------- iiMac 24 M1 16Go/1To 13.5.1
iMac 27 i5 3,1GHz 8Go/1To 10.11.6 / 10.6.8 iMac 20 C.Duo 2,6Ghz 8Go/350Go 10.6.8 / 10.11 Mini C.Duo 2,0Ghz 2Go/500Go 10.6.8 |
|
|
22 Oct 2022, 13:29
Message
#10
|
|
Adepte de Macbidouille Groupe : Membres Messages : 130 Inscrit : 21 Jan 2007 Membre no 78 760 |
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 !!! -------------------- Ancien matériel possedé : MacBook noir Core 2 Duo 2 gHz RAM 4GB HD 500GB, MacBook blanc Core 2 Duo 2,2 gHz RAM 4GB SSD 128GB, iPod Mini Alu 4GB, iPhone 3G Black 16GB, Elgato EyeTV, Elgato Turbo.264, iPhone 4 16GB , Phone 4S 16GB, iPhone SE 32GB, HD externe LaCie 120GB.
Actuellement toujours chez : MacBook Air M1 8GB RAM 256GB SSD gris sidéral, iPad 9 64 GB gris sidéral, iPhone 11 64GB jaune, Apple Watch SE 2020, Apple TV 4K, SSD externe Crucial 1TB. |
|
|
22 Oct 2022, 14:25
Message
#11
|
|
Adepte de Macbidouille Groupe : Membres Messages : 130 Inscrit : 21 Jan 2007 Membre no 78 760 |
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. -------------------- Ancien matériel possedé : MacBook noir Core 2 Duo 2 gHz RAM 4GB HD 500GB, MacBook blanc Core 2 Duo 2,2 gHz RAM 4GB SSD 128GB, iPod Mini Alu 4GB, iPhone 3G Black 16GB, Elgato EyeTV, Elgato Turbo.264, iPhone 4 16GB , Phone 4S 16GB, iPhone SE 32GB, HD externe LaCie 120GB.
Actuellement toujours chez : MacBook Air M1 8GB RAM 256GB SSD gris sidéral, iPad 9 64 GB gris sidéral, iPhone 11 64GB jaune, Apple Watch SE 2020, Apple TV 4K, SSD externe Crucial 1TB. |
|
|
22 Oct 2022, 14:47
Message
#12
|
|
Adepte de Macbidouille Groupe : Membres Messages : 130 Inscrit : 21 Jan 2007 Membre no 78 760 |
j'ai essayé :
Code set maListe to (every message in sent "[email protected]" whose date sent > MDate) Cela ne fonctionne pas non plus... -------------------- Ancien matériel possedé : MacBook noir Core 2 Duo 2 gHz RAM 4GB HD 500GB, MacBook blanc Core 2 Duo 2,2 gHz RAM 4GB SSD 128GB, iPod Mini Alu 4GB, iPhone 3G Black 16GB, Elgato EyeTV, Elgato Turbo.264, iPhone 4 16GB , Phone 4S 16GB, iPhone SE 32GB, HD externe LaCie 120GB.
Actuellement toujours chez : MacBook Air M1 8GB RAM 256GB SSD gris sidéral, iPad 9 64 GB gris sidéral, iPhone 11 64GB jaune, Apple Watch SE 2020, Apple TV 4K, SSD externe Crucial 1TB. |
|
|
22 Oct 2022, 17:57
Message
#13
|
|
Macbidouilleur de bronze ! Groupe : Membres Messages : 265 Inscrit : 7 Dec 2013 Lieu : Ile de France Membre no 188 169 |
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 -------------------- iiMac 24 M1 16Go/1To 13.5.1
iMac 27 i5 3,1GHz 8Go/1To 10.11.6 / 10.6.8 iMac 20 C.Duo 2,6Ghz 8Go/350Go 10.6.8 / 10.11 Mini C.Duo 2,0Ghz 2Go/500Go 10.6.8 |
|
|
24 Oct 2022, 14:38
Message
#14
|
|
Adepte de Macbidouille Groupe : Membres Messages : 130 Inscrit : 21 Jan 2007 Membre no 78 760 |
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]" -------------------- Ancien matériel possedé : MacBook noir Core 2 Duo 2 gHz RAM 4GB HD 500GB, MacBook blanc Core 2 Duo 2,2 gHz RAM 4GB SSD 128GB, iPod Mini Alu 4GB, iPhone 3G Black 16GB, Elgato EyeTV, Elgato Turbo.264, iPhone 4 16GB , Phone 4S 16GB, iPhone SE 32GB, HD externe LaCie 120GB.
Actuellement toujours chez : MacBook Air M1 8GB RAM 256GB SSD gris sidéral, iPad 9 64 GB gris sidéral, iPhone 11 64GB jaune, Apple Watch SE 2020, Apple TV 4K, SSD externe Crucial 1TB. |
|
|
24 Oct 2022, 14:46
Message
#15
|
|
Macbidouilleur de bronze ! Groupe : Membres Messages : 265 Inscrit : 7 Dec 2013 Lieu : Ile de France Membre no 188 169 |
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 Ce message a été modifié par PBell - 24 Oct 2022, 14:49. -------------------- iiMac 24 M1 16Go/1To 13.5.1
iMac 27 i5 3,1GHz 8Go/1To 10.11.6 / 10.6.8 iMac 20 C.Duo 2,6Ghz 8Go/350Go 10.6.8 / 10.11 Mini C.Duo 2,0Ghz 2Go/500Go 10.6.8 |
|
|
24 Oct 2022, 15:01
Message
#16
|
|
Adepte de Macbidouille Groupe : Membres Messages : 130 Inscrit : 21 Jan 2007 Membre no 78 760 |
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. Ce message a été modifié par davdenice - 24 Oct 2022, 15:03. -------------------- Ancien matériel possedé : MacBook noir Core 2 Duo 2 gHz RAM 4GB HD 500GB, MacBook blanc Core 2 Duo 2,2 gHz RAM 4GB SSD 128GB, iPod Mini Alu 4GB, iPhone 3G Black 16GB, Elgato EyeTV, Elgato Turbo.264, iPhone 4 16GB , Phone 4S 16GB, iPhone SE 32GB, HD externe LaCie 120GB.
Actuellement toujours chez : MacBook Air M1 8GB RAM 256GB SSD gris sidéral, iPad 9 64 GB gris sidéral, iPhone 11 64GB jaune, Apple Watch SE 2020, Apple TV 4K, SSD externe Crucial 1TB. |
|
|
24 Oct 2022, 15:17
Message
#17
|
|
Adepte de Macbidouille Groupe : Membres Messages : 130 Inscrit : 21 Jan 2007 Membre no 78 760 |
L'idéal serait de pouvoir traiter les mails dans le dossier "Envoyés" de [email protected].
Fichier(s) joint(s)
-------------------- Ancien matériel possedé : MacBook noir Core 2 Duo 2 gHz RAM 4GB HD 500GB, MacBook blanc Core 2 Duo 2,2 gHz RAM 4GB SSD 128GB, iPod Mini Alu 4GB, iPhone 3G Black 16GB, Elgato EyeTV, Elgato Turbo.264, iPhone 4 16GB , Phone 4S 16GB, iPhone SE 32GB, HD externe LaCie 120GB.
Actuellement toujours chez : MacBook Air M1 8GB RAM 256GB SSD gris sidéral, iPad 9 64 GB gris sidéral, iPhone 11 64GB jaune, Apple Watch SE 2020, Apple TV 4K, SSD externe Crucial 1TB. |
|
|
24 Oct 2022, 16:17
Message
#18
|
|
Macbidouilleur de bronze ! Groupe : Membres Messages : 265 Inscrit : 7 Dec 2013 Lieu : Ile de France Membre no 188 169 |
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]" ? Cordialement -------------------- iiMac 24 M1 16Go/1To 13.5.1
iMac 27 i5 3,1GHz 8Go/1To 10.11.6 / 10.6.8 iMac 20 C.Duo 2,6Ghz 8Go/350Go 10.6.8 / 10.11 Mini C.Duo 2,0Ghz 2Go/500Go 10.6.8 |
|
|
24 Oct 2022, 16:24
Message
#19
|
|
Adepte de Macbidouille Groupe : Membres Messages : 130 Inscrit : 21 Jan 2007 Membre no 78 760 |
Non, je n'ai aucun compte toto
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 ? Ce message a été modifié par davdenice - 24 Oct 2022, 16:21. -------------------- Ancien matériel possedé : MacBook noir Core 2 Duo 2 gHz RAM 4GB HD 500GB, MacBook blanc Core 2 Duo 2,2 gHz RAM 4GB SSD 128GB, iPod Mini Alu 4GB, iPhone 3G Black 16GB, Elgato EyeTV, Elgato Turbo.264, iPhone 4 16GB , Phone 4S 16GB, iPhone SE 32GB, HD externe LaCie 120GB.
Actuellement toujours chez : MacBook Air M1 8GB RAM 256GB SSD gris sidéral, iPad 9 64 GB gris sidéral, iPhone 11 64GB jaune, Apple Watch SE 2020, Apple TV 4K, SSD externe Crucial 1TB. |
|
|
24 Oct 2022, 16:55
Message
#20
|
|
Adepte de Macbidouille Groupe : Membres Messages : 176 Inscrit : 15 Mar 2008 Lieu : Lorraine Membre no 110 156 |
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 -------------------- Imac 27 I7 Fusion drive fin 2013 Ram 8Go Mac OS X (10.14.6)
MacBook Pro 15 pouces mi-2012 8Go Ram Mac OS X (10.14.6) Imac 24 M3 2023 Ram 24Go macOS Sonoma 14.3 |
|
|
24 Oct 2022, 21:27
Message
#21
|
|
Adepte de Macbidouille Groupe : Membres Messages : 130 Inscrit : 21 Jan 2007 Membre no 78 760 |
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 ? -------------------- Ancien matériel possedé : MacBook noir Core 2 Duo 2 gHz RAM 4GB HD 500GB, MacBook blanc Core 2 Duo 2,2 gHz RAM 4GB SSD 128GB, iPod Mini Alu 4GB, iPhone 3G Black 16GB, Elgato EyeTV, Elgato Turbo.264, iPhone 4 16GB , Phone 4S 16GB, iPhone SE 32GB, HD externe LaCie 120GB.
Actuellement toujours chez : MacBook Air M1 8GB RAM 256GB SSD gris sidéral, iPad 9 64 GB gris sidéral, iPhone 11 64GB jaune, Apple Watch SE 2020, Apple TV 4K, SSD externe Crucial 1TB. |
|
|
25 Oct 2022, 15:46
Message
#22
|
|
Macbidouilleur de bronze ! Groupe : Membres Messages : 265 Inscrit : 7 Dec 2013 Lieu : Ile de France Membre no 188 169 |
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 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 -------------------- iiMac 24 M1 16Go/1To 13.5.1
iMac 27 i5 3,1GHz 8Go/1To 10.11.6 / 10.6.8 iMac 20 C.Duo 2,6Ghz 8Go/350Go 10.6.8 / 10.11 Mini C.Duo 2,0Ghz 2Go/500Go 10.6.8 |
|
|
26 Oct 2022, 14:57
Message
#23
|
|
Adepte de Macbidouille Groupe : Membres Messages : 130 Inscrit : 21 Jan 2007 Membre no 78 760 |
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 ? Ce message a été modifié par davdenice - 26 Oct 2022, 14:58.
Fichier(s) joint(s)
-------------------- Ancien matériel possedé : MacBook noir Core 2 Duo 2 gHz RAM 4GB HD 500GB, MacBook blanc Core 2 Duo 2,2 gHz RAM 4GB SSD 128GB, iPod Mini Alu 4GB, iPhone 3G Black 16GB, Elgato EyeTV, Elgato Turbo.264, iPhone 4 16GB , Phone 4S 16GB, iPhone SE 32GB, HD externe LaCie 120GB.
Actuellement toujours chez : MacBook Air M1 8GB RAM 256GB SSD gris sidéral, iPad 9 64 GB gris sidéral, iPhone 11 64GB jaune, Apple Watch SE 2020, Apple TV 4K, SSD externe Crucial 1TB. |
|
|
26 Oct 2022, 15:23
Message
#24
|
|
Macbidouilleur d'Or ! Groupe : Modérateurs Messages : 19 573 Inscrit : 22 Jul 2004 Lieu : Louvain-la-Neuve (Gaule Gelbique) Membre no 21 291 |
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/...ca-7a3e9c363ed7 -------------------- ¶ MacBook Pro 14’’ 2021, M1 Pro, 16 Go/1 To – macOS 12.6 “Monterey” ¶ MacBook Pro 15’’ mi-2010 Core i5 2,53 GHz, 8 Go/SSD Samsung 860EVO 1 To – Mac OSX 10.6.8 ¶ Power Macintosh G3 beige de bureau, rev.1 @ 233MHz, 288 Mo/4Go – MacOS 9.1 + carte PCI IDE/ATA Tempo 66 Acard 6260 avec HD interne Maxtor 80 Go + graveur interne CDRW/DVD LG GCC-4520B + tablette A4 Wacom UD-0608-A + LaCie ElectronBlueIV 19" + HP ScanJet 6100C ¶ B-Box 3 + HP LaserJet 4000 N
¶ La recherche dans MacBidouille vous paraît obscure ? J'ai rédigé une proposition de FAQ. Le moteur logiciel a un peu changé depuis mais ça peut aider quand même. … Les corsaires mettent en berne… |
|
|
26 Oct 2022, 17:26
Message
#25
|
|
Macbidouilleur de bronze ! Groupe : Membres Messages : 265 Inscrit : 7 Dec 2013 Lieu : Ile de France Membre no 188 169 |
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 -------------------- iiMac 24 M1 16Go/1To 13.5.1
iMac 27 i5 3,1GHz 8Go/1To 10.11.6 / 10.6.8 iMac 20 C.Duo 2,6Ghz 8Go/350Go 10.6.8 / 10.11 Mini C.Duo 2,0Ghz 2Go/500Go 10.6.8 |
|
|
26 Oct 2022, 17:28
Message
#26
|
|
Adepte de Macbidouille Groupe : Membres Messages : 130 Inscrit : 21 Jan 2007 Membre no 78 760 |
Merci pour votre aide à tous.
Cependant j'ai utilisé Numbers pour convertir le .csv en format Numbers. -------------------- Ancien matériel possedé : MacBook noir Core 2 Duo 2 gHz RAM 4GB HD 500GB, MacBook blanc Core 2 Duo 2,2 gHz RAM 4GB SSD 128GB, iPod Mini Alu 4GB, iPhone 3G Black 16GB, Elgato EyeTV, Elgato Turbo.264, iPhone 4 16GB , Phone 4S 16GB, iPhone SE 32GB, HD externe LaCie 120GB.
Actuellement toujours chez : MacBook Air M1 8GB RAM 256GB SSD gris sidéral, iPad 9 64 GB gris sidéral, iPhone 11 64GB jaune, Apple Watch SE 2020, Apple TV 4K, SSD externe Crucial 1TB. |
|
|
26 Oct 2022, 17:50
Message
#27
|
|
Macbidouilleur de bronze ! Groupe : Membres Messages : 265 Inscrit : 7 Dec 2013 Lieu : Ile de France Membre no 188 169 |
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 -------------------- iiMac 24 M1 16Go/1To 13.5.1
iMac 27 i5 3,1GHz 8Go/1To 10.11.6 / 10.6.8 iMac 20 C.Duo 2,6Ghz 8Go/350Go 10.6.8 / 10.11 Mini C.Duo 2,0Ghz 2Go/500Go 10.6.8 |
|
|
26 Oct 2022, 19:57
Message
#28
|
|
Adepte de Macbidouille Groupe : Membres Messages : 130 Inscrit : 21 Jan 2007 Membre no 78 760 |
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 Bonsoir, et merci pour ta contribution 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 -------------------- Ancien matériel possedé : MacBook noir Core 2 Duo 2 gHz RAM 4GB HD 500GB, MacBook blanc Core 2 Duo 2,2 gHz RAM 4GB SSD 128GB, iPod Mini Alu 4GB, iPhone 3G Black 16GB, Elgato EyeTV, Elgato Turbo.264, iPhone 4 16GB , Phone 4S 16GB, iPhone SE 32GB, HD externe LaCie 120GB.
Actuellement toujours chez : MacBook Air M1 8GB RAM 256GB SSD gris sidéral, iPad 9 64 GB gris sidéral, iPhone 11 64GB jaune, Apple Watch SE 2020, Apple TV 4K, SSD externe Crucial 1TB. |
|
|
27 Oct 2022, 08:45
Message
#29
|
|
Macbidouilleur de bronze ! Groupe : Membres Messages : 265 Inscrit : 7 Dec 2013 Lieu : Ile de France Membre no 188 169 |
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. -------------------- iiMac 24 M1 16Go/1To 13.5.1
iMac 27 i5 3,1GHz 8Go/1To 10.11.6 / 10.6.8 iMac 20 C.Duo 2,6Ghz 8Go/350Go 10.6.8 / 10.11 Mini C.Duo 2,0Ghz 2Go/500Go 10.6.8 |
|
|
27 Oct 2022, 09:40
Message
#30
|
|
Adepte de Macbidouille Groupe : Membres Messages : 130 Inscrit : 21 Jan 2007 Membre no 78 760 |
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. Ce message a été modifié par davdenice - 27 Oct 2022, 09:54. -------------------- Ancien matériel possedé : MacBook noir Core 2 Duo 2 gHz RAM 4GB HD 500GB, MacBook blanc Core 2 Duo 2,2 gHz RAM 4GB SSD 128GB, iPod Mini Alu 4GB, iPhone 3G Black 16GB, Elgato EyeTV, Elgato Turbo.264, iPhone 4 16GB , Phone 4S 16GB, iPhone SE 32GB, HD externe LaCie 120GB.
Actuellement toujours chez : MacBook Air M1 8GB RAM 256GB SSD gris sidéral, iPad 9 64 GB gris sidéral, iPhone 11 64GB jaune, Apple Watch SE 2020, Apple TV 4K, SSD externe Crucial 1TB. |
|
|
Nous sommes le : 25th September 2024 - 22:45 |