Automatiser envoi mail journalier

digisi

Membre junior
26 Avril 2020
39
0
33
Non pas de conseil, je ne connaît pas les réactions des fournisseur d'accès.

Mais si cela te convient comme ça pas de problème...

Tes tests ont-ils étaient concluant, as tu des modifs à faire ?

Je te rappelle que tu peux exclure une personne en mettant un "X" en colonne B, et tu peux relancer une nouvelle vague de mail après avoir supprimer tous les "X".

si c'est bon enregistres comme application, et programme l'ouverture automatique de cette application soit dans le calendrier soit dans l'économie d'énergie.

Tient moi au courant du résultat ;).
J'ai tenté des tests et voila mes retours.

- Si le fichier numbers est fermé le script ne marche pas du coup qu'elle est l'interêt de mettre en application ? Car dans tous les cas il faut que j'ouvre le fichier numbers avant de lancer l'application ? Existe t'il une solution pour que le script lance tout en 1 clic stp ?

- Pour info, la mise en page de la cellule numbers fonctionne. Par exemple saut de ligne c'est option + retour.

Sinon question, dans un futur fichier j'envisage de diviser les adresses par département (1 département = 1 feuille avec une liste de mails). Est ce qu'il y a une solution pour que le script commence par exemple par la premiere feuille et enchaine sur les suivante au fur et a mesure.

Sinon quand j'essaie en mode application ca me demande toujours une autorisation avant de lancer, existe t'il une solution également ? J'ai cherché dans la partie Sécurité et confidentialité pour débloquer mais rien de proposé.

De plus pour l'ouverture automatique via le calendrier ça m'intéresse que l'envoie se fasse du lundi au vendredi à 9h30, possible via le script ?

Merci d'avance pour tes réponses.
 

Fichiers joints

  • Capture d’écran 2020-04-28 à 19.42.02.png
    Capture d’écran 2020-04-28 à 19.42.02.png
    14,2 KB · Affichages: 55
  • Capture d’écran 2020-04-28 à 19.25.49.png
    Capture d’écran 2020-04-28 à 19.25.49.png
    446 KB · Affichages: 55
  • Capture d’écran 2020-04-28 à 19.27.58.png
    Capture d’écran 2020-04-28 à 19.27.58.png
    127,1 KB · Affichages: 56

zeltron54

Membre d’élite
29 Mars 2008
2 146
335
Lorraine
On va procéder un problème après l'autre.
Le fichier Numbers ne s'ouvre pas ! il y a pourtant une demande d'ouverture dans le script.
Quel est son nom et ou se trouve t'il ?
Y a t'il un message d'erreur lors du lancement du script ... lequel ?

Si tu as des doutes sur le chemin , fait une demande d'info du fichier (cmd + i) et fait une copie d'écran.
 

digisi

Membre junior
26 Avril 2020
39
0
33
On va procéder un problème après l'autre.
Le fichier Numbers ne s'ouvre pas ! il y a pourtant une demande d'ouverture dans le script.
Quel est son nom et ou se trouve t'il ?
Y a t'il un message d'erreur lors du lancement du script ... lequel ?

Si tu as des doutes sur le chemin , fait une demande d'info du fichier (cmd + i) et fait une copie d'écran.
Ok top
  • le fichier ce nome liste.numbers
  • il se trouve dans un dossier qui lui même se trouve dans documents (voir pièce jointe)
  • oui il y a un message d'erreur (voir pièce jointe)
  • concernant le chemin il est visible dans la pièce jointe également
Capture d’écran 2020-04-28 à 20.31.38.png Capture d’écran 2020-04-28 à 20.32.55.png
 

zeltron54

Membre d’élite
29 Mars 2008
2 146
335
Lorraine
Ok donc c'est un problème de rapidité d'ouverture du fichier sur ton ordi.

On va ajouter une tempo pour attendre qu'il soit ouvert on va essayer 3 secondes
Il faut ajouter ; delay 3 a la 5ieme ligne
ce qui donne pour le 1er pavé:

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

test !
 

digisi

Membre junior
26 Avril 2020
39
0
33
Ok donc c'est un problème de rapidité d'ouverture du fichier sur ton ordi.

On va ajouter une tempo pour attendre qu'il soit ouvert on va essayer 3 secondes
Il faut ajouter ; delay 3 a la 5ieme ligne
ce qui donne pour le 1er pavé:

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

test !
Top, ça marche !
 

zeltron54

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

Donc lorsque tu as une appli de ton script la demande qui demande d'autoriser cette appli est à valider.
Ton appli s'appelle "Sans titre" donne lui un nom plus explicite.

après un premier lancement il faut aller dans préférences système --> Sécurité et confidentialité-->Accessibilité
Déverrouiller le cadena avec ton mot de passe et cocher ton appli, si elle n'y est pas, cliquer sur + la rechercher et la cocher)
Ceci sera à faire chaque fois que tu modifieras l'appli.

Pour le changement de feuille par département c'est plus complexe pour réaliser un enchainement, je regarde et je te dirais ça.

J'attend le retour pour l'autorisation.
On verra ensuite comment programmer son lancement auto.
 

digisi

Membre junior
26 Avril 2020
39
0
33
Ok

Donc lorsque tu as une appli de ton script la demande qui demande d'autoriser cette appli est à valider.
Ton appli s'appelle "Sans titre" donne lui un nom plus explicite.

après un premier lancement il faut aller dans préférences système --> Sécurité et confidentialité-->Accessibilité
Déverrouiller le cadena avec ton mot de passe et cocher ton appli, si elle n'y est pas, cliquer sur + la rechercher et la cocher)
Ceci sera à faire chaque fois que tu modifieras l'appli.

Pour le changement de feuille par département c'est plus complexe pour réaliser un enchainement, je regarde et je te dirais ça.

J'attend le retour pour l'autorisation.
On verra ensuite comment programmer son lancement auto.
C'est ok pour l'autorisation ;)
 

zeltron54

Membre d’élite
29 Mars 2008
2 146
335
Lorraine
Pour le lancement auto.
Ton ordi est'il toujours allumé à l'heure de l'envoi des mail?
Si non il faut l'allumer 5 ou 10 minutes avant l'heure
Pour ça dans préférences système --> Economiseur d'énergie--> bouton programmer --> démarrer ou réactiver--> tu sélectionnes les jours et l'heure.
 

digisi

Membre junior
26 Avril 2020
39
0
33
Pour le lancement auto.
Ton ordi est'il toujours allumé à l'heure de l'envoi des mail?
Si non il faut l'allumer 5 ou 10 minutes avant l'heure
Pour ça dans préférences système --> Economiseur d'énergie--> bouton programmer --> démarrer ou réactiver--> tu sélectionnes les jours et l'heure.
Oui il est allumé à l'heure de l'envoi des mails.
Par contre j'ai quand même une question a ce sujet si un jour j'utilise cet allumage automatique, il prend en compte les MDP ?
 

zeltron54

Membre d’élite
29 Mars 2008
2 146
335
Lorraine
Pour les MDP je n'ai pas essayé...

Pour lancer l'appli:
Dans calendrier tu crées les évènements les bons jours tu cliques sur la date--> dans récurences tu mets toutes les semaines,
Dans alertes-->personnalisé --> message avec son tu choisis ouvrir le fichier --> autres et tu sélectionnes ton appli. et tu choisis au moment de l'évènement.

Tu crées un évènement par jour de la semaine interressés.
 

zeltron54

Membre d’élite
29 Mars 2008
2 146
335
Lorraine
Pour le MDP à l'ouverture auto, il ne prend pas de MDP, donc il faut soit le désactiver, soit créer une session spéciale pour ça sans mot de passe...

Pour ton changement de feuille je regarde, dans les prochains jours. Et je te tiens au courant.
Sinon tu mets tout à la suite sur la même feuille..
 

digisi

Membre junior
26 Avril 2020
39
0
33
Pour les MDP je n'ai pas essayé...

Pour lancer l'appli:
Dans calendrier tu crées les évènements les bons jours tu cliques sur la date--> dans récurences tu mets toutes les semaines,
Dans alertes-->personnalisé --> message avec son tu choisis ouvrir le fichier --> autres et tu sélectionnes ton appli. et tu choisis au moment de l'évènement.

Tu crées un évènement par jour de la semaine interressés.
Voila c'est fait, j'ai mis 5 min pour la durée de l'événement :up:
Capture d’écran 2020-04-28 à 22.41.30.png Capture d’écran 2020-04-28 à 22.39.44.png
 

zeltron54

Membre d’élite
29 Mars 2008
2 146
335
Lorraine
Je vois que tu as mis ça au mois de mai ...
Fait un test avant, demain par exemple ou même dans 2 minutes pour vérifier si tout se passe bien.
 

digisi

Membre junior
26 Avril 2020
39
0
33
Je vois que tu as mis ça au mois de mai ...
Fait un test avant, demain par exemple ou même dans 2 minutes pour vérifier si tout se passe bien.
Je viens de tester à l'instant et ca marche vraiment bien, l'évènement se lance et fait de même avec le script qui applique bien le schéma.
 

zeltron54

Membre d’élite
29 Mars 2008
2 146
335
Lorraine
Bien,
Alors pour faire un multi-feuille j'ai une solution.
Il faut que la première feuille se nomme "Ain-01" (impératif), la deuxième pour mon cas --> "Aisne-02",la troisième "Allier-03" etc...

Dans le fichier numbers après la dernière adresse de chaque page, la ligne suivante sera en colonne A (à la place de l'adresse mail-->"Fin" et la colonne B de cette même ligne sera le nom de la feuille suivante.
exemple: la dernière ligne de la feuille Ain-01 sera en colonne A--> Fin et en colonne B-->Aisne-02.

j'espère avoie été assez clair.

Bon test (chez moi cela fonctionne)
le script:
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 "Ain-01"
    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 "ain-01"
    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:"Sujet", 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
            end tell
           
            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 cellasuite to "B" & (leslignes + 1) as string
                    set lasuite to value of cell cellasuite
                    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
 

zeltron54

Membre d’élite
29 Mars 2008
2 146
335
Lorraine
Bonjour,
Alors quelques modifs pour que le script passe automatiquement à la feuille suivante.

Il suffit si une feuille suivante existe d'entrée dans la dernière cellule de la colonne "A" à la place d'une adresse mail le mot "Fin"

Quand le script trouvera "Fin" comme adresse mail, il ira à la feuille suivante.
Bien sur ne pas mettre "fin" s'il n'y a pas de feuille suivante.
le script:

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:"Sujet", 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
            end tell
            
            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,
Alors quelques modifs pour que le script passe automatiquement à la feuille suivante.

Il suffit si une feuille suivante existe d'entrée dans la dernière cellule de la colonne "A" à la place d'une adresse mail le mot "Fin"

Quand le script trouvera "Fin" comme adresse mail, il ira à la feuille suivante.
Bien sur ne pas mettre "fin" s'il n'y a pas de feuille suivante.
le script:

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:"Sujet", 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
            end tell
           
            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,

J'étais un peu off aujourd'hui, merci beaucoup pour ce nouveau script et le temps que tu m'accordes.
Je vais le tester ce soir pour voir je te fais un retour rapidement. :)
 

digisi

Membre junior
26 Avril 2020
39
0
33
Bonjour,
Alors quelques modifs pour que le script passe automatiquement à la feuille suivante.

Il suffit si une feuille suivante existe d'entrée dans la dernière cellule de la colonne "A" à la place d'une adresse mail le mot "Fin"

Quand le script trouvera "Fin" comme adresse mail, il ira à la feuille suivante.
Bien sur ne pas mettre "fin" s'il n'y a pas de feuille suivante.
le script:

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:"Sujet", 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
            end tell
           
            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

Bon verdict : Top :D

Question toi qui t'y connais bien, j'ai un tableau numbers qui existe en version textedit avec du texte et des mails.
Le tableau compte au moins 13000 lignes en comptant le texte et les mails. Le fichier texte n'en parlons pas j'envoie pas le bout.
La je traite manuellement l'export des mails pour avoir une liste propre.
Existe t'il une façon par le biais d'un script de le faire automatiquement et m'épargner le fait de regarder ligne par ligne ?
Merci d'avance pour ta réponse.
 

zeltron54

Membre d’élite
29 Mars 2008
2 146
335
Lorraine
Je n'ai pas bien compris .
Un tableau numbers en version textedit ...???
une éventuelle copie d'écran pourrait m'aider à comprendre.
 

digisi

Membre junior
26 Avril 2020
39
0
33
Je n'ai pas bien compris .
Un tableau numbers en version textedit ...???
une éventuelle copie d'écran pourrait m'aider à comprendre.
Non en fait le contenu je l'ai en deux versions : textedit et numbers
Et en gros moi je souhaite récupérer les mails.
A ce jour je fais copier coller dans un nouveau tableau pour avoir une base de mail propre et automatiser l'envoi
Capture d’écran 2020-04-30 à 19.00.27.png
Capture d’écran 2020-04-30 à 18.58.59.png