Automatiser envoi mail journalier

zeltron54

Membre d’élite
29 Mars 2008
2 146
335
Lorraine
Tu as vérifié ou se trouve la PJ et son nom ?
 

zeltron54

Membre d’élite
29 Mars 2008
2 146
335
Lorraine
Alors je suis désolé, mais comme ça fonctionne chez moi je ne sais pas comment t'aider ! :bigtears: :banghead:
 

zeltron54

Membre d’élite
29 Mars 2008
2 146
335
Lorraine
Bonjour,

Après bien des recherches, j'ai fini par trouver ton problème. C'est une histoire de délai, le script envoyait le mail avant d'avoir fini d'y intégrer la pièce jointe, j'ai ajouté un délai de 1 seconde.
je te joins le nouveau script. tiens moi au courant !

Bloc de code:
tell application "Finder"
    set chemin to ((path to home folder) & "documents:script mail:liste.numbers") as string
    open chemin
    activate
    delay 3
end tell

tell application "Numbers"
    set lafeuille to 1
    set CR to (ASCII character 13) -- initialise un retour ligne
    set nbmessage to 0
    set leslignes to 2 -- initialise le numéro de la première ligne des clients
    set lasuite to 1
    repeat
        tell table 1 of sheet lafeuille of document "liste.numbers" -- voir document numbers
            set blabla to value of cell "B1" -- récupère le texte de la cellule E1
            set leslignes to 2 -- initialise le numéro de la première ligne des clients
        end tell
       
       
        if nbmessage = 50 then exit repeat -- stop si 50 messages
       
        tell table 1 of sheet lasuite of document "liste.numbers" -- voir document numbers
           
            repeat
                set celtest to "B" & leslignes as string
                set letest to value of cell celtest -- controle si mail déja envoyé
                if letest = "X" then
                    set leslignes to leslignes + 1
                else
                    exit repeat
                end if
            end repeat
           
            set celmail to "A" & leslignes as string
            set celsuite to "A" & (leslignes + 1) as string
            set suite to value of cell celsuite
           
            set lemail to value of cell celmail as string -- recupère le nom
            if lemail = "missing value" then -- vérifie si la derniere ligne
                exit repeat
            end if
        end tell
       
        tell application "Mail"
            set contenu to "Bonjour, " & CR & CR & blabla -- prépare le contenu du mail
           
            set newMessage to make new outgoing message with properties {subject:"test", content:contenu} -- prépare le mail
           
           
            tell newMessage
                set toaddresslist to {lemail} -- prépare l'adressed'envoi
                make new to recipient at end of to recipients with properties {address:toaddresslist} -- envoi le mail
               
                --Ajout pièces jointes
                tell application "Finder"
                    set cheminPJ to ((path to home folder) & "documents:script mail:presentation.pdf") as string
                end tell
                set PieceJointe_list to {cheminPJ}
                repeat with nbpj from 1 to count PieceJointe_list
                   
                    set mapj to item nbpj of PieceJointe_list as alias
                    tell content of newMessage to make new attachment with properties {file name:mapj} at after last paragraph
                end repeat
                --fin ajout
            end tell
            delay 1
            send newMessage
            set nbmessage to nbmessage + 1 --compte le nombre de message envoyé
        end tell
        tell application "Numbers"
            tell table 1 of sheet lasuite of document "liste.numbers"
                set value of cell celtest to "X" -- renseigne numbers mail envoyé
               
                if suite = "fin" then
                    set lasuite to lasuite + 1
                    set leslignes to 1
                end if
               
            end tell
        end tell
        set leslignes to leslignes + 1 -- prépare numéro ligne suivante
    end repeat
   
    save front document
    quit
end tell
 

digisi

Membre junior
26 Avril 2020
39
0
33
Bonjour,

Après bien des recherches, j'ai fini par trouver ton problème. C'est une histoire de délai, le script envoyait le mail avant d'avoir fini d'y intégrer la pièce jointe, j'ai ajouté un délai de 1 seconde.
je te joins le nouveau script. tiens moi au courant !

Bloc de code:
tell application "Finder"
    set chemin to ((path to home folder) & "documents:script mail:liste.numbers") as string
    open chemin
    activate
    delay 3
end tell

tell application "Numbers"
    set lafeuille to 1
    set CR to (ASCII character 13) -- initialise un retour ligne
    set nbmessage to 0
    set leslignes to 2 -- initialise le numéro de la première ligne des clients
    set lasuite to 1
    repeat
        tell table 1 of sheet lafeuille of document "liste.numbers" -- voir document numbers
            set blabla to value of cell "B1" -- récupère le texte de la cellule E1
            set leslignes to 2 -- initialise le numéro de la première ligne des clients
        end tell
      
      
        if nbmessage = 50 then exit repeat -- stop si 50 messages
      
        tell table 1 of sheet lasuite of document "liste.numbers" -- voir document numbers
          
            repeat
                set celtest to "B" & leslignes as string
                set letest to value of cell celtest -- controle si mail déja envoyé
                if letest = "X" then
                    set leslignes to leslignes + 1
                else
                    exit repeat
                end if
            end repeat
          
            set celmail to "A" & leslignes as string
            set celsuite to "A" & (leslignes + 1) as string
            set suite to value of cell celsuite
          
            set lemail to value of cell celmail as string -- recupère le nom
            if lemail = "missing value" then -- vérifie si la derniere ligne
                exit repeat
            end if
        end tell
      
        tell application "Mail"
            set contenu to "Bonjour, " & CR & CR & blabla -- prépare le contenu du mail
          
            set newMessage to make new outgoing message with properties {subject:"test", content:contenu} -- prépare le mail
          
          
            tell newMessage
                set toaddresslist to {lemail} -- prépare l'adressed'envoi
                make new to recipient at end of to recipients with properties {address:toaddresslist} -- envoi le mail
              
                --Ajout pièces jointes
                tell application "Finder"
                    set cheminPJ to ((path to home folder) & "documents:script mail:presentation.pdf") as string
                end tell
                set PieceJointe_list to {cheminPJ}
                repeat with nbpj from 1 to count PieceJointe_list
                  
                    set mapj to item nbpj of PieceJointe_list as alias
                    tell content of newMessage to make new attachment with properties {file name:mapj} at after last paragraph
                end repeat
                --fin ajout
            end tell
            delay 1
            send newMessage
            set nbmessage to nbmessage + 1 --compte le nombre de message envoyé
        end tell
        tell application "Numbers"
            tell table 1 of sheet lasuite of document "liste.numbers"
                set value of cell celtest to "X" -- renseigne numbers mail envoyé
              
                if suite = "fin" then
                    set lasuite to lasuite + 1
                    set leslignes to 1
                end if
              
            end tell
        end tell
        set leslignes to leslignes + 1 -- prépare numéro ligne suivante
    end repeat
  
    save front document
    quit
end tell
Bonjour,

Effectivement je viens d'essayer le nouveau script et c'était un soucis de délai.
Question, est ce qu'il est possible de modifier la police ou la taille du "Bonjour" stp ?

Bonne journée,
 

zeltron54

Membre d’élite
29 Mars 2008
2 146
335
Lorraine
Bonjour,

Je t'avais mis ces possibilités dans le 1er script de ce post.

Il suffit d'ajouter, dans le bloc tell (NewMessage) les valeurs dans une boucle qui compte le nombres de caractères sur lequel appliquer.

Exemple: ton texte commence par "Bonjour" il y a donc 7 caractères à partir du début du texte, et tu veux mettre en "helvetica bold" et en taille "16".

Le bloc tell devient: je te mets le bloc complet:

Bloc de code:
tell newMessage
                set toaddresslist to {lemail} -- prépare l'adressed'envoi
                make new to recipient at end of to recipients with properties {address:toaddresslist} -- envoi le mail
                
                --Ajout pièces jointes
                tell application "Finder"
                    set cheminPJ to ((path to home folder) & "documents:script mail:presentation.pdf") as string
                end tell
                set PieceJointe_list to {cheminPJ}
                repeat with nbpj from 1 to count PieceJointe_list
                    
                    set mapj to item nbpj of PieceJointe_list as alias
                    tell content of newMessage to make new attachment with properties {file name:mapj} at after last paragraph
                end repeat
                --fin ajout
                
                repeat with y from 0 to 7
                    set font of character (y) of content to "Helvetica Bold"
                    set size of character (y) of content to "16"
                end repeat
                
            end tell
            delay 1
 

digisi

Membre junior
26 Avril 2020
39
0
33
Bonjour,

Je t'avais mis ces possibilités dans le 1er script de ce post.

Il suffit d'ajouter, dans le bloc tell (NewMessage) les valeurs dans une boucle qui compte le nombres de caractères sur lequel appliquer.

Exemple: ton texte commence par "Bonjour" il y a donc 7 caractères à partir du début du texte, et tu veux mettre en "helvetica bold" et en taille "16".

Le bloc tell devient: je te mets le bloc complet:

Bloc de code:
tell newMessage
                set toaddresslist to {lemail} -- prépare l'adressed'envoi
                make new to recipient at end of to recipients with properties {address:toaddresslist} -- envoi le mail
              
                --Ajout pièces jointes
                tell application "Finder"
                    set cheminPJ to ((path to home folder) & "documents:script mail:presentation.pdf") as string
                end tell
                set PieceJointe_list to {cheminPJ}
                repeat with nbpj from 1 to count PieceJointe_list
                  
                    set mapj to item nbpj of PieceJointe_list as alias
                    tell content of newMessage to make new attachment with properties {file name:mapj} at after last paragraph
                end repeat
                --fin ajout
              
                repeat with y from 0 to 7
                    set font of character (y) of content to "Helvetica Bold"
                    set size of character (y) of content to "16"
                end repeat
              
            end tell
            delay 1
Merci pour ta réactivité !
Je viens de tester le script pour le moment ca marche vraiment bien la PJ s'insère parfaitement, seule chose qui varie avec cette modification c'est le délai entre les envois des mails (c'est un peu plus long). En revanche ça répond a une problématique c'est que je n'ai plus de mails en attente d'envoi
 

zeltron54

Membre d’élite
29 Mars 2008
2 146
335
Lorraine
Si tout fonctionne , content pour toi.

bonne journée.