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 :

Définir un chemin de sauvegarde pour mes pdf


Sujet :

AppleScript

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2013
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 11
    Points : 8
    Points
    8
    Par défaut Définir un chemin de sauvegarde pour mes pdf
    Bonjour,

    Je galère depuis quelque temps avec un script me permettant d'envoyer à mes client un mail personnalisé avec une pièce jointe. Tout fonctionne à peu près bien mais de temps à autre les fichiers change de point de sauvegarde et je n'arrive pas à définir un point de sauvegarde pour les fichiers word convertis en pdf.

    Je vous remercie par avance !

    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
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    ----------------------
    --Main Programme
    ----------------------
     
    set startCell to "A1" as string
    set leSujet to "CES EduPack 2013 – Maintenance de votre installation"
    --set leCorps to ("Bonjour " & leSujet)
     
    display dialog "Enter the Name of the last cell in Excel " default answer "AA25"
    set endCell to text returned of the result
     
    set myMatrix to excelTxtExtract(startCell, endCell)
    set custInfo to findInfo(myMatrix, 1) --récupération des mots clés
     
    set partChoix to choose from list custInfo with prompt "Choose part(s) for file name :" with multiple selections allowed
    set numList to posElmList(partChoix, custInfo)
    --display dialog posList as string
     
     
    set myFilenameWord to (choose file with prompt "Please select the Word Template doc for the Quotation :")
     
    set partChoix to choose from list custInfo with prompt "Choose the email address :"
    set emailList to posElmList(partChoix, custInfo)
    --display dialog emailList as string
     
    set partChoix2 to choose from list custInfo with prompt "Choose Title of the person :"
    set title1 to posElmList(partChoix2, custInfo)
     
    set partChoix3 to choose from list custInfo with prompt "Choose the Name of hte person :"
    set name1 to posElmList(partChoix3, custInfo)
     
    set partChoix4 to choose from list custInfo with prompt "Choose the Nbr of User of the Lycée :"
    set seat1 to posElmList(partChoix4, custInfo)
     
    set partChoix5 to choose from list custInfo with prompt "Choose the licence type:"
    set licenceType1 to posElmList(partChoix5, custInfo)
     
    set partChoix6 to choose from list custInfo with prompt "Choose the maintenance expire date:"
    set expireMaint1 to posElmList(partChoix6, custInfo)
     
    repeat with i from 2 to (length of myMatrix)
    	set customer to findInfo(myMatrix, i)
    	set email to nomFichier(emailList, customer) as string
     
    	set title2 to nomFichier(title1, customer) as string
    	set name2 to nomFichier(name1, customer) as string
    	set seat2 to nomFichier(seat1, customer) as string
    	set licenceType2 to nomFichier(licenceType1, customer) as string
    	set expireMaint2 to nomFichier(expireMaint1, customer) as string
     
    	set leCorps to "Bonjour " & title2 & " " & name2 & "," & return & return & "TEXTE"
     
    	set nomDuFichier to nomFichier(numList, customer) as string
    	wordTxtModif(myFilenameWord, customer, custInfo, nomDuFichier)
    	envoiMail(leSujet, leCorps, email, nomDuFichier)
    end repeat
     
    ----------------------
    --Envoyer Mail
    ----------------------
     
    on envoiMail(leSujet, leCorps, email, nomDuFichier)
    	tell application "Mail"
    		activate
    		set nouveauMessage to make new outgoing message with properties {subject:leSujet, content:leCorps & return & return, visible:false}
    		tell nouveauMessage
    			make new to recipient at end of to recipients with properties {address:email}
    			tell content of nouveauMessage
    				make new attachment with properties {file name:("/Users/grantadesign/Documents/" & nomDuFichier & ".pdf")} at after the last paragraph
    			end tell
    			send nouveauMessage
    		end tell
    	end tell
    end envoiMail
     
    ----------------------
    --Nom du fichier 
    --Retourne le nom du fichier sans l'extension "Lycée F.Xavier"
    ----------------------
    on nomFichier(numList, customer)
    	activate
    	set nomDuFichier to {}
    	repeat with i from 1 to (length of numList)
    		set a to item i of numList
    		copy (item a of customer) to the end of nomDuFichier
    	end repeat
    	return nomDuFichier
    end nomFichier
     
    ----------------------
    --Position d'un élément dans une lste
    ----------------------
    on posElmList(partChoix, custInfo)
    	activate
    	set elmChoix to 0
    	set numList to {}
    	repeat with i from 1 to (length of custInfo)
    		set elmChoix to elmChoix + 1
    		repeat with j from 1 to (length of partChoix)
    			if ((item j of partChoix) = (item i of custInfo)) then
    				copy elmChoix to the end of numList
    			end if
    		end repeat
    	end repeat
    	return numList
    end posElmList
     
     
     
    ----------------------
    --Modifier un document Word
    --remplacer des mots dans un texte
    ----------------------
     
    on wordTxtModif(myFilenameWord, customer, custInfo, nomDuFichier)
    	tell application "Microsoft Word" -- 
    		activate
    		open myFilenameWord
    		set findrange to find object of selection -- ???
    		repeat with i from 1 to (length of custInfo)
    			tell findrange --replacement of the bookmark
    				execute find find text (item i of custInfo) replace with (item i of customer) replace replace all
    			end tell
     
    		end repeat
    		--display dialog nomDuFichier as string
    		save as active document file name (nomDuFichier & ".pdf") file format format PDF
    		close window 1 saving no
    	end tell
    end wordTxtModif
     
    ----------------------
    --Chargement des valeurs Excel dans une liste
    --Ammélioration : trouver startCell et endCell automatiquement
    ----------------------
    on excelTxtExtract(startCell, endCell)
    	tell application "Microsoft Excel" -- Load values from Excel
    		activate
    		set myFilenameExcel to choose file with prompt "Please select an Excel workbook file:"
    		open myFilenameExcel
    		set nameworksheet to get name of every worksheet
    		set myWorksheet to choose from list nameworksheet default items (item 1 of nameworksheet) with prompt "Choose a worksheet where the data are in the list:"
    		activate object worksheet (result as string)
    		set myMatrix to value of range (startCell & ":" & endCell)
    		return (myMatrix)
    	end tell
    end excelTxtExtract
     
    ----------------------
    --Trouver automatiquement les Mots clés à remplacer dans le texte
    --lineChosen est la ligne que l'on veut lire
    ----------------------
    on findInfo(myMatrix, lineChosen)
    	activate
    	set custInfo to {}
    	set selectLine to (item lineChosen of myMatrix)
    	repeat with i from 1 to (length of selectLine)
    		set custInfo to custInfo & (item i of selectLine)
    	end repeat
    	return custInfo
    end findInfo

  2. #2
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2013
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 11
    Points : 8
    Points
    8
    Par défaut
    Au fait si vous avez des idées pour améliorer ce script je suis preneur

  3. #3
    Invité
    Invité(e)
    Par défaut
    moi perso sa fonctione pas !

  4. #4
    Membre éprouvé

    Homme Profil pro
    Directeur de projet
    Inscrit en
    Septembre 2010
    Messages
    603
    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 : 603
    Points : 1 240
    Points
    1 240
    Par défaut Email automatiques
    Bonsoir xav.btz,
    J’ai regardé ton programme, tes sous-programmes et tes commentaires. Il me semble que ton fichier excel contient des emails, et des attributs par client (licence, date expiration,..), par ligne. Pour chaque ligne tu veux modifier un fichier Word, puis le mettre en pièces jointe et l’envoyer à l’adresse du client...?
    Pour bien comprendre, il faudrait que je connaisse la structure exacte de ton document Excel.
    Il semble qu’il contienne un maximum de 25 lignes (de 1 à 25), chaque ligne contenant 27 cellules (de A à AA).
    Soit dit en passant, la propriété Excel currentRegion.rows.count donne la dernière ligne continue d'un bloc de données (recherche automatique pour savoir si la dernière est AA25 ou autre).

    La ligne 1 contient des mots clés (selon ton commentaire dans findInfo). Ces mots clés sont sélectionnables par l’utilisateur (lignes 15 et 16).
    Mais il me manque quelque chose pour comprendre pourquoi l’utilisateur doit de nouveau choisir dans la même liste custInfo les adresses email (lignes
    22 / 23), puis les titres des personnes (lignes 26/27) et ainsi de suite jusqu’à la ligne 39.

    Idem, je ne comprends pas le lien entre le commentaire ligne 78 (retourne le nom du fichier sans extension) et la sous-routine correspondante qui semble ne faire qu’une concaténation de liste.

    Si tu veux que je revois ton script, il faut que je sois certain de comprendre ce que tu veux faire (au moins, si ce n'est plus que de comprendre ce que tu as fait dans ton programme actuel).

    Par ailleurs tu parles de chemin pour des PDF, mais je ne vois que Word dans ton script...

    Plus d'explication me seraient utiles pour t'aider...si je peux !
    Cordialement

Discussions similaires

  1. X3 V6 : Chemin de sauvegarde des fichiers PDF
    Par BBARON dans le forum SAGE
    Réponses: 2
    Dernier message: 09/05/2016, 18h31
  2. Réponses: 3
    Dernier message: 02/08/2010, 18h36
  3. Réponses: 1
    Dernier message: 25/07/2007, 10h21
  4. définir un chemin pour tous mes .lib
    Par keenan dans le forum Visual C++
    Réponses: 2
    Dernier message: 09/03/2007, 10h31
  5. Réponses: 6
    Dernier message: 28/09/2004, 17h47

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