IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

AppleScript Discussion :

Automatiser envoi mail journalier


Sujet :

AppleScript

  1. #1
    Candidat au Club
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Avril 2020
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Avril 2020
    Messages : 3
    Par défaut Automatiser envoi mail journalier
    Bonjour à tous,

    Je souhaitais savoir s'il était possible (règles mail, apple script, automator), de mettre en place un scénario d'envoi de mails.

    Le schéma serait celui-ci :
    Copier l'adresse depuis Excel ou Numbers et créer un nouveau mail
    Copier le message depuis Word ou Pages et le coller dans ce mail
    Envoyer le message
    Limiter les envois à 50 par jour du lundi au vendredi
    Identifier dans Excel ou Numbers les emails traités pour éviter les doublons au niveau des envois

    J'espère être clair.

    Du coup, je voulais savoir, selon vous quel serait le moyen de parvenir à cela.

    Merci d'avance pour vos réponses.

    Bon dimanche.

  2. #2
    Membre émérite

    Homme Profil pro
    Directeur de projet
    Inscrit en
    Septembre 2010
    Messages
    606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Septembre 2010
    Messages : 606
    Par défaut
    Bonjour,
    Oui, ce que tu cherches à faire est tout à fait possible peut être avec Automator, sûrement avec Applescript.
    Le "peut être" avec Automator résulte de ma faible utilisation de celui-ci.

    Dans les 2 cas, il faut commencer par bien découper les actions en séquences de base, ce qui te permettra de mettre au point chaque étape simplement.
    Tout d'abord, je me pose la question: pourquoi tu souhaites envoyer 50 emails avec le même contenu plutôt que un seul email quotidien à 50 destinataires ?

    Etape 1: Gestion des données.
    Les données fixes : Le nom et chemin du fichier Excel contenant la liste d'adresses, le nom et chemin du fichier Word contenant le texte de l'email. On peut soit les mettre "en dur" dans le script, soit les lire à partir d'un fichier texte qui, lui est à une place fixe. J'ai tendance à préférer le fichier texte, pour 2 raisons:
    D'une part c'est plus simple à maintenir si tu veux utiliser un autre fichier Excel avec une autre liste. En outre, ce même fichier pourrait contenir le titre de ton email.
    D'autre part à chaque fois que tu voudras modifier ces données, si elles sont dans le script lui-même, il faudra que tu ré-autorises le script à se lancer : Mac Os se protège en te demandant, pour chaque nouveau script, si tu es OK pour le lancer. Changer le contenu d'un script revient à le considérer comme nouveau. Si pas de changement, la première autorisation suffit !

    Les données variables : Il faut décider où mémoriser les adresses déjà traitées. Je pense que le plus simple est d'ajouter une colonne B dans le fichier Excel, en face de chaque nom, avec la date d'envoi. Si la cellule est vide, l'adresse est à traiter, sinon, tu peux savoir quand elle a été traitée.
    Note : je ne gère pas le compteur de 1 à 50: tu feras un boucle de 1 à 50 dans ton script.

    Etape 2: ouvrir le fichier Word, copier le texte dans le presse papier, fermer le fichier Word.

    Etape 3: ouvrir le fichier Excel, chercher la première adresse, cellule Ax, pour laquelle la cellule Bx est vide, lire l'adresse (option: lire les 50 adresses suivantes d'un coup)

    Etape 4: créer un email avec le titre (??), l'adresse ou les adresses email, et copier le le presse papier dans le contenu du mail. Envoyer cet email. Si tu optes toujours pour 50 emails à un seul destinataire, cette étape devra être une boucle de 1 à 50. Il faut aussi prévoir le cas où tu n'as pas assez d'adresses. Par exemple ton fichier contient 70 adresses. Le premier jour on traite les adresse de A1 à A50, mais le second jour, il faut voir que la liste des adresses Excel n'est que de A51 à A70 !

    Etape 5 : mettre à jour la colonne B du fichier Excel avec la date du jour, pour les adresses utilisées, et enregistrer le fichier Excel pour le lendemain.

    Etape 6 : Lorsque le script regroupant les étapes 1 à 5 est au point, il déclencher ce script quotidiennement du lundi au vendredi.
    Il suffit pour cela de créer, dans Calendrier, un évènement répétitif qui déclenchera le script. Il suffit d'utiliser la fonction de récurrence, puis l'option tous les jours, en ne sélectionnant que les jours lundi à vendredi. Régler l'alerte sur "personnaliser" puis "ouvrir le fichier" en sélectionnant ton fichier script.

    Si tu n'as jamais fait d'Applescript, il va te falloir investir du temps et surtout il faut que tu fasses ces étapes séparément pour les mettre au point.
    Chacune est en effet suffisamment simple pour que tu puisse lui trouver des exemples sur le Net...et du support ici.

    Ce temps investi sera payé en retour, car il te fera sans doute écrire d'autres scripts.

    Commence par écrire un script pour lire un fichier texte contenant 3 lignes : le titre de l'email, les noms et chemins des fichiers Excel et Word. Je te suggère de ne pas mettre ce fichier sur ton bureau pour éviter un effacement par erreur.

    Cordialement

  3. #3
    Candidat au Club
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Avril 2020
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Avril 2020
    Messages : 3
    Par défaut
    Bonjour,

    Merci d'avoir pris le temps de me répondre.
    Etant complètement novice je vais suivre tes conseils et le faire étape par étape.
    Concernant les 50 mails au lieu d'un mail à 50 personnes, je pense que j'ai voulu faire compliquer alors que je peux faire simple.
    Je te tiens au courant de mon avancé.
    Merci encore.

    Bonne journée,

  4. #4
    Membre émérite

    Homme Profil pro
    Directeur de projet
    Inscrit en
    Septembre 2010
    Messages
    606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Septembre 2010
    Messages : 606
    Par défaut
    Bonjour,
    Comme j'ai eu un peu de temps ce matin, je ai écrit le script ci-dessous qui nécessite les éléments suivants pour fonctionner :

    Un fichier texte dont le chemin et nom sont indiqués dans la variable F_texte. A toi de changer pour le placer où tu le souhaites.
    Ce fichier doit contenir 3 lignes :
    1) le nom et chemin d'accès à ton fichier Excel contenant les adresses emails en colonne A (la colonne B contiendra les dates d'envoi des emails)
    2) le nom et chemin d'accès à ton fichier Word contenant le texte du contenu de ton email
    3) le titre de l'email

    Voici un exemple de ce contenu :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Users:imac27:Desktop:test:Adresses.xlsx
    Users:imac27:Desktop:test:Word_doc.docx
    Ceci est le titre de mon email de test
    J'ai décomposé le script en sous-routines pour la compréhension.
    J'ai laissé en commentaire l'instruction "send" pour envoyer l'email préparé avec les adresses, contenu et titre, pour que tu puisse voir le résultat. Lorsque que tu sera satisfait, il faut enlever les 2 tirets devant pour la rendre active.

    Pour mes tests, j'ai utilisé une variable "Paquet" que j'ai mise à 10 pour faire des emails par paquet de 10 adresses. OK pour les tests, mais tu pourra la remettre à 50.

    Enfin, pour être complet, je crois qu'il ne reste qu'un petit détail, c'est le "coller" du text Word dans le contenu de l'email. Le texte pur est collé, mais pas ses attributs (gras, couleur,...). Si nécessaire, je te laisse chercher cette partie.

    Prépare bien tes fichiers txt, Word et Excel aux emplacements adéquats. Copie le script ci-dessous dans ton Editeur de Script et exécuté !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    (* Envoi automatique d'emails à partir d'une liste d'adresse
    
    1 - lecture d'un fichier texte avec 3 lignes :
            a) le nom/chemin d'un fichier Excel (liste adresses)
             b) le nom/chemin d'un fichier Word (contenu de l'email)
            c) le titre de l'email
    
    2 - Lecture du fichier Word pour récupération du texte
    
    
    3 - lecture du fichier Excel pour lecture des 50 adresses non encore utilisées
    
    
    4 - Préparation et envoi de l'email
    
    
    5 - Enregistrement dans Excel des adresses utilisées
    
    
    *)
    
    
    property F_Texte : "Users:imac27:Desktop:test:Prefs_mail.txt" -- emplacement du fichier texte
    property Paquet : 10 -- nombre maximum d'adresses simultanées
    global F_Excel, F_Word, Titre-- variables globales
    global L_Debut, L_Fin, Mes_Adresses
    
    
    
    
    -- script principal
    Lecture_Txt()
    Lecture_Word(F_Word)
    
    
    set L_Debut to 1
    set L_Fin to 1
    set Mes_Adresses to {}
    Lecture_XL_Adresses(F_Excel)
    tell application "Mail"
    activate
        set Mon_Email to make new outgoing message with properties {visible:true, subject:Titre, content:the clipboard}
        tell Mon_Email
            repeat with Une_adresse in Mes_Adresses
    make new to recipient at end of to recipients with properties {name:"", address:Une_adresse}
            end repeat
    -- pour les test l'instruction send est en commentaire !
    -- send
        end tell
    end tell
    Maj_Excel()
    
    
    -- fin du script principal
    
    
    
    
    on Lecture_Txt() -- lit le fichier texte dans les variables F_Excel, F_Word et Titre
        try
            set Lignes to paragraphs of (read file F_Texte)
            set F_Excel to item 1 of Lignes
            set F_Word to item 2 of Lignes
            set Titre to item 3 of Lignes
        end try
    end Lecture_Txt
    
    
    
    
    on Lecture_Word(f) -- lecture du fichier Word et renvoi le contenu dans le presse papier
        try
            tell application "Microsoft Word"
    open file f
    activate
            end tell
            tell application "System Events" to tell process "Microsoft Word"
    keystroke "a" using {command down}
    keystroke "c" using {command down}
            end tell
            tell application "Microsoft Word" to close front window
        end try
    end Lecture_Word
    
    
    
    
    on Lecture_XL_Adresses(f) -- lecture du fichier Excel avec récupération des numéros lignes début, fin et la liste des adresse
        tell application "Microsoft Excel"
    open file f
    activate
            tell sheet 1 of front document
                set Nb_Lignes to first row index of (get end (last cell of column 1) direction toward the top)
                set L_Debut to first row index of (get end (last cell of column 2) direction toward the top)
                set L_Fin to L_Debut + Paquet
                if L_Fin > Nb_Lignes then set L_Fin to Nb_Lignes
                set Mes_Adresses to (value of range ("A" & L_Debut & ":A" & L_Fin))
            end tell
        end tell
    end Lecture_XL_Adresses
    
    
    
    
    on Maj_Excel() -- met à jour les lignes Excel traitees, enregsitre et ferme
        set Date_Jour to short date string of (current date)
        tell application "Microsoft Excel"
            tell sheet 1 of front document
                set value of range ("B" & L_Debut & ":B" & L_Fin) to Date_Jour
            end tell
    close active workbook saving yes
        end tell
    end Maj_Excel
    Cordialement

  5. #5
    Candidat au Club
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Avril 2020
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Avril 2020
    Messages : 3
    Par défaut
    Bonjour,

    Merci pour ton aide.
    Je vais essayé de suite pour voir le résultat.
    Je te tiens au courant.

    Bon après-midi,

Discussions similaires

  1. Réponses: 1
    Dernier message: 27/06/2012, 00h43
  2. [XL-2007] Automatiser envoi d'un mail par onglet
    Par anthooooony dans le forum Excel
    Réponses: 5
    Dernier message: 22/12/2011, 10h38
  3. Automatisation envoi de mail via INOTES et pas NOTES
    Par matybouch dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 26/04/2011, 22h15
  4. [VB6] Executable automatisation macro excel + envoi mail
    Par jyrki69 dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 04/05/2006, 18h13
  5. [VBA-E]Envoi de mail journalier
    Par illight dans le forum Macros et VBA Excel
    Réponses: 15
    Dernier message: 28/04/2006, 10h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo