Envoyer un mail personnalisé à plusieurs destinataires

zeltron54

Membre d’élite
29 Mars 2008
2 007
313
Lorraine
Bonsoir,
La majorité des applis de publipostage fabrique un fichier qui peut être envoyé ensuite par mail en pièce-jointe.
J'avais pour ma part été obligé de faire un petit applescript pour pouvoir envoyer le texte en temps que contenu du mail. Par contre la construction de ce texte doit être faite dans le script s' il n'y a pas trop de champs à remplir.
Donc il faut que le script fasse :

1 - récupérer dans des variables le texte commun au mail, le texte personnalisé et l'adresse mail du destinataire
2 - Concevoir le texte du script avec la part commune plus l'ajout de la part personnalisé à l'aide des variables
3 - préparer le mail (objet + contenu + destinataire)
4 - envoyer le mail.

Un peu de patience et de temps devrait permettre la réalisation de ce script .
 

Thrawn77

Membre junior
19 Octobre 2014
68
2
Mais je ne sais pas du tout comment ça fonctionne ... je ne suis pas programmeur :'( je n'ai jamais touché à une ligne (de code !)
 

zeltron54

Membre d’élite
29 Mars 2008
2 007
313
Lorraine
Dis-moi exactement :
1 - comment est le fichier numbers (quelles cellules contiennent): les éléments de texte personnalisé (lignes et colonne contiennent quoi ?)
2 - Quelle est le contenu du mail part commune, et part variable.

Dés que j'ai un peut de temps je pourrai regardé si j'arrive à un résultat .
 

Thrawn77

Membre junior
19 Octobre 2014
68
2
Oh c'est très gentil !

alors dans le fichier numbers il y a les colonnes "Nom" "Prénom" "email" "date d'envoi"

et dans le contenu mail :
Bonjour <Prénom> <Nom>,

Suite à mon mail du <date d'envoi> , je me permets bla bla bla ...

c'est "tout" :)
(je pense qu'une fois devant le script avec les parties importantes faites, je devrais réussir à comprendre ;) )

Merci d'avance, c'est très sympathique.
 

zeltron54

Membre d’élite
29 Mars 2008
2 007
313
Lorraine
quelles colonnes pour nom, prenom, email et date d'envoi ?
et les données commencent à quelle ligne ?
et quel est le nom de ton fichier numbers ?

éventuellement tu pourrais mettre le " , je me permet bla bla bla .... " dans une cellule de ton fichier numbers par exemple en "E1" ce qui permettrait de le recupérer dans le script
 

Thrawn77

Membre junior
19 Octobre 2014
68
2
Nom du ficher Numbers : Publipostage_prod
colonne A : prénom
colonne B : nom
colonne C : adresse mail
colonne D : date d'envoi
E2 : texte blabla

les données commencent à la ligne 2
 

zeltron54

Membre d’élite
29 Mars 2008
2 007
313
Lorraine
OK je suppose que le premier client est en ligne 2 !
Attention il faut que les cellules de la colonne contenant la date soit au format texte !
Dés que j'ai un peut de temps je m'y colle
 
  • J’aime
Réactions: Thrawn77

zeltron54

Membre d’élite
29 Mars 2008
2 007
313
Lorraine
Bon je t' envoie un premier jet:

Il faut d'abord:
-- Que le fichier Numbers soit ouvert
-- Ton fichier Numbers doit avoir en dernière ligne un nom: fin qui permettra d'arrêter le script (tu peux d'ailleur mettre une ligne fin en 3 ou 4 ième position pour tester)
-- Dans la ligne de script ou je prépare le mail changer "sujet" par l'objet du mail de ton choix.

Pour utiliser ce script:
Tu ouvres l'éditeur de script qui est application--> utilitaires et tu fais un copier coller du script
tu enregistres ce script.
Tu devrais alors pouvoir cliquer sur l'icone exécuter et voir ce qui se passe.
J'attends ton retour !

Bloc de code:
tell application "Numbers"
    tell table 1 of sheet 1 of document "Publipostage_prod.numbers"-- voir document numbers
        set CR to (ASCII character 13) -- initialise un retour ligne
        set blabla to value of cell "E1" -- récupère le texte de la cellule E1
        set leslignes to 2 -- initialise le numéro de la première ligne des clients
        repeat
          
            set celnom to "A" & leslignes as string -- initialise les variables de numéro de cellules des données
            set celprenom to "B" & leslignes as string
            set celmail to "C" & leslignes as string
            set celdate to "D" & leslignes as string
            set lenom to value of cell celnom -- recupère le nom
            if lenom = "fin" then  -- vérifie si la derniere ligne
                exit repeat
            end if
            set leprenom to value of cell celprenom -- récupère le prenom
            set lemail to value of cell celmail -- récupère le mail
            set ladate to value of cell celdate -- récupère la date
                      
            tell application "Mail"
                set contenu to "Bonjour " & leprenom & " " & lenom & "," & CR & "Suite à mon mail du " & ladate & " " & 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
            end tell
          
            set leslignes to leslignes + 1 -- prépare numéro ligne suivante
        end repeat
    end tell
end tell
 
  • J’aime
Réactions: Thrawn77

Thrawn77

Membre junior
19 Octobre 2014
68
2
@zeltron54 : Un grand grand merci ! ton script est super clair, avec tes petites annotations, c'est facile à modifier du coup pour ajuster pile poil à mes besoins.
Un immense merci !!! tu viens de m'épargner beaucoup de temps de manipulation inutile !!
Super super sympa.

Je voudrais tous vous remercier chaleureusement pour vos différents messages, pour trouver une solution "simple" pour ce problème de publipostage.
:)
 

zeltron54

Membre d’élite
29 Mars 2008
2 007
313
Lorraine
Content pour toi !
Si besoin de modif pas de problème, tu postes ici.
Bonne journée.
 
  • J’aime
Réactions: Thrawn77

Thrawn77

Membre junior
19 Octobre 2014
68
2
:) super !

du coup, par exemple si je veux mettre le texte en gras ou en italique dans le contenu du message, je fais comment? ^^ parce que ça ne prends pas en compte la variation de font de Numbers ;)

Et si tu as une ligne de code qui permet d'insérer la "signature" dans mail, ça serait top. Car elle est en automatique quand on créer un mail, mais pas avec le script.
merci :p
 
Dernière édition:

zeltron54

Membre d’élite
29 Mars 2008
2 007
313
Lorraine
Je ne connaît pas de script pour Mail (je ne m'en sert pas)!
Je regarderai si je trouve des infos sur le net ... (absent pour le Week-end)
 
  • J’aime
Réactions: Thrawn77

zeltron54

Membre d’élite
29 Mars 2008
2 007
313
Lorraine
mes recherches me donnent:
1 -- pour mettre le contenu en gras et choisir la police (helvetica dans mon exemple)
ajouter ces 3 lignes de code aprés la ligne : tell newMessage

repeat with y from 0 to count of contenu
set font of character (y) of content to "Helvetica Bold"
end repeat

2 -- pour insérer la signature (je n'ai pas testé car pas d'utilisation de mail pour moi)
ligne à mettre juste avant le ligne: tell newMessage

set message signature of newMessage to signature "Signature #1"

Remplacer Signature #1 par le nom de ta signature

En espérant que cela fonctionne.
 
  • J’aime
Réactions: Thrawn77

Thrawn77

Membre junior
19 Octobre 2014
68
2
mes recherches me donnent:
1 -- pour mettre le contenu en gras et choisir la police (helvetica dans mon exemple)
ajouter ces 3 lignes de code aprés la ligne : tell newMessage

repeat with y from 0 to count of contenu
set font of character (y) of content to "Helvetica Bold"
end repeat

2 -- pour insérer la signature (je n'ai pas testé car pas d'utilisation de mail pour moi)
ligne à mettre juste avant le ligne: tell newMessage

set message signature of newMessage to signature "Signature #1"

Remplacer Signature #1 par le nom de ta signature

En espérant que cela fonctionne.

Hello,

alors tout ne fonctionne pas ;)
1- ça met en gras tout le texte, mais je ne voudrais en mettre que certains mots :/
2- ça indique que le script à échoué

^^voila pour les nouvelles ;)
 

zeltron54

Membre d’élite
29 Mars 2008
2 007
313
Lorraine
Je pensais que tu voulais mettre tout en gras !
Quelques explications pour passer le texte en gras avec les 3 lignes:

la première ligne démarre une boucle (répétition) de (y =0) à (nombre de caractères du contenu)
la deuxieme ligne met le caractère (y) en gras
la troisième ligne renvoi à la première jusqu'à la fin.

La solution pour toi pourrai être de compter les mots au lieu des caractères.
Si tu sais la position du mot que tu veux mettre en gras exemple du 10ieme mot au 12ième (3 mots)les 3 lignes deviennent;

repeat with y from 10 to 12
set font of word (y) of content to "Helvetica Bold"
end repeat

Pour la signature je n'ai rien trouvé d'autre. Mais (si c'est du texte) tu peux l'inclure dans ton texte de la cellule E1.
Ou dans une autre cellule, tu la récupères dans une variable et tu l'ajoutes en fin de contenu en modifiant le ligne (prépare le contenu du mail). (exemple en F1)

set masignature to value of cell "F1" -- récupère le contenu de la cellule F
set contenu to "Bonjour " & leprenom & " " & lenom & "," & CR & "Suite à mon mail du " & ladate & " " & blabla &CR &CR & masignature -- prépare le contenu du mail

Désolé mais j'ai rien trouvé d'autre , et je ne peux pas tester ...
 
  • J’aime
Réactions: Thrawn77

Thrawn77

Membre junior
19 Octobre 2014
68
2
d'accord super, je vais tester ça. je vais compter mes mots, je n'ai pas intérêt a faire tout un poème ;)
merci beaucoup en tout cas pour le temps que tu as pris pour moi, c'est vraiment très chouette ! sincèrement
 

cookie81

Nouveau membre
1 Septembre 2020
1
0
39
zeltron 54. Je voulais te remercier pour l'aide que tu as apporté. Ton expertise est impressionnante et ton aide est préciseuse! Bravo, le monde a besoin de gens comme toi!