Re: [AS] Problème de compilation

Page principale
Supprimer ce message
Répondre à ce message
Auteur: Yves Petronin via Applescript_fr
Date:  
À: La liste AppleScript Francophone
CC: Yves Petronin
Nouveaux-sujets: [AS] Copier une cellule excel
Sujet: Re: [AS] Problème de compilation
Curieusement je viens d’essayer le script sur un ancien portable MacBook Pro (15 pouces, début 2011) ayant le même OS et les mêmes versions de logiciels, et il compile aussi sans problème.

Ce n’est pas très élégant, mais j’ai synchronisé les contacts sur celui là avec mon téléphone, lancé avec succès le script et vais synchroniser les contacts du premier ordinateur à nouveau…

Salutations




> Le 7 oct. 2020 à 15:59, Yvan KOENIG via Applescript_fr <applescript_fr@???> a écrit :
>
> Le script compile sans problème sous 10.13.6.
>
> Yvan KOENIG (VALLAURIS, France) mercredi 7 octobre 2020 15:57:50
>
>> Le 7 oct. 2020 à 14:15, Patrick Proniewski via Applescript_fr <applescript_fr@???> a écrit :
>>
>> Bonjour,
>>
>> Je viens de tenter la compilation sur macos 10.14.6 et c'est passé sans erreur.
>> Je n'ai pas lancé le script par contre.
>>
>> patpro
>>
>>
>> October 7, 2020 1:19 PM, "Yves Petronin via Applescript_fr" <applescript_fr@???> wrote:
>>
>>> J’essaie sous OSX 10.12.6 de réutiliser un script ancien pour normaliser les noms des contacts du
>>> carnet d’adresses, (script « optimisé" il y a fort longtemps grâce à l’aide avisée d'Yvan Koenig),
>>> et le script ne compile plus:
>>>
>>> le problème semble lié à la ligne: tell application "Contacts" to set l to (name of every group)
>>>
>>> qui retourne : « nom de classe prévu mais identificateur trouvé(s)
>>>
>>> J’ai regardé le dictionnaire de l’application sans trouver d’explication, il existe bine un « group
>>> » doté d’un nom…
>>> Quelle est le problème et surtout la solution ?
>>>
>>> Merci
>>>
>>> —DEBUT SCRIPT
>>> (*************************************************************************************************)
>>> (* Script de conversion prénoms du carnet d'adressses en caractères minuscules, le premier
>>> caractère restant ou devenant majuscule.
>>> * Les tirets dans les prénoms composés ne sont pas pris en compte et sont éliminés.
>>> *Version: 0.9.3
>>> * Compatibilité: Mac OS X. Le carnet d'adresses Apple doit être présent
>>>
>>> *
>>> * Auteur: Y Petronin avec code emprunté à Apple
>>> *
>>> * Fichier:
>>> * Fichiers/Dossiers annexes:
>>> * Libs:
>>> * Osaxen:
>>> * Outils Unix: non
>>> * Apps:
>>> *
>>> * Description:
>>> *
>>> * * Utilisation: ...Lancer le script... *
>>> * Historique: Aménagements variés:
>>> *
>>> * 0.9.8
>>> * 2009-01-02 Version alpha *
>>> * 2009-01-06 Added routine to handle composed names (containing an hyphen)
>>> * 2009-01-07 Moved routine to handle composed names outside of main
>>> * 2009-01-09 Added several routines to allow user to select groups in address book
>>> *2013-05-19 Added option for lower or to upper characters for names
>>> *2013-05-27 Major simplification with use of Python
>>> *2019-04-28 Correction or routien filtering the german character sz
>>> *)
>>>
>>> (* Product properties *)
>>> property pMyName : "Conversion caractères prénoms carnet d'adresses" (* default name *)
>>> property version : "0.9.3"
>>>
>>> --User properties
>>>
>>> property PGroupName : missing value (*Nom du groupe du carnet d'adresses à traiter*)
>>> property pThePerson : missing value (*Nom du contact du carnet d'adresses*)
>>> property pTheFormat : missing value (*Format des noms propres*)
>>> property p2Contacts : missing value
>>>
>>> ----------------------------------------------------------------------------------------------------
>>> ------------------------
>>> on init()
>>> set pTheFormat to my GetFormat()
>>> set PGroupName to my GetGroups()
>>> end init
>>> ----------------------------------------------------------------------------------------------------
>>> ----------------
>>>
>>> on run
>>> main()
>>> end run
>>>
>>> ----------------------------------------------------------------------------------------------------
>>> -----------------
>>>
>>> on main()
>>> init()
>>> my UpdateNames(pThePerson, PGroupName, pTheFormat)
>>>
>>> end main
>>>
>>> --------------------------------------
>>>
>>> on GetGroups()
>>> tell application "Contacts" to set l to (name of every group)
>>> if l is in {"", missing value} then
>>> return missing value
>>> else
>>> set L1 to {"Tous"} & l -- items of l
>>> tell application (path to frontmost application as text) -- POUR METTRE LE CAIALOGUE AU PREMIER
>>> PLAN
>>> choose from list L1 with prompt " Ce script formate prénoms et noms des contacts du cahier
>>> d'adresses." & return & "Il est recommandé de sauvegarder au préalable votre carnet d'adresses." &
>>> return & "Veuillez choisir ci dessous un ou plusieurs groupes de contacts à traiter ou tous les
>>> contacts: " cancel button name "ANNULER" OK button name "OK" without multiple selections allowed
>>> and empty selection allowed
>>> end tell
>>> if the result is false then
>>> delay 0.5
>>> error number -128
>>> else
>>> return the result as text
>>> end if
>>> end if
>>> end GetGroups
>>>
>>> on GetFormat()
>>> set L1 to {"DUPONT", "Durand"}
>>> set dlg to choose from list L1 with prompt "Veuillez choisir le format des noms de famille" cancel
>>> button name "ANNULER" OK button name "OK" without multiple selections allowed and empty selection
>>> allowed
>>> set r to the result
>>> if the r as text is "Durand" then
>>> return "title"
>>> end if
>>> if the r as text is "DUPONT" then
>>> return "upper"
>>> end if
>>> if r is false then
>>> error number -128
>>> end if
>>> end GetFormat
>>>
>>> on UpdateNames(pThePerson, PGroupName, pTheFormat)
>>> if PGroupName is not in {missing value, "Tous"} then
>>> set g to "Cette opération peut prendre plusieurs minutes !"
>>> my dlgAlert(g)
>>> tell application "Contacts"
>>> repeat with pThePerson in people of group PGroupName
>>> set TheNom to the (first name of the pThePerson) as text
>>> tell pThePerson to set first name to my FormatName(TheNom, "title") as string
>>> set FamilyName to the (last name of the pThePerson) as text
>>> tell pThePerson to set its last name to my FormatName(FamilyName, pTheFormat)
>>> save
>>> end repeat
>>> end tell
>>> else
>>> set g to "Tous les contacts seront traités! Cette opération peut prendre plusieurs minutes !"
>>> my dlgAlert(g)
>>> tell application "Contacts"
>>> repeat with pThePerson in people
>>> set TheNom to the (first name of the pThePerson) as text
>>> tell pThePerson to set first name to my FormatName(TheNom, "title") as string
>>> set FamilyName to the last name of the pThePerson as text
>>> tell pThePerson to set its last name to my FormatName(FamilyName, pTheFormat)
>>> save
>>> end repeat
>>> end tell
>>> end if
>>> end UpdateNames
>>>
>>> on dlgAlert(g)
>>> activate
>>> set bs to {"ANNULER", "CONTINUER"}
>>> display dialog g buttons bs default button 2 with icon 1 giving up after 8
>>> set {b, u} to {button returned, gave up} of result
>>> if u then set b to bs's item 1
>>> if b is bs's item 1 then error number -128 (* ¡localization! *)
>>> end dlgAlert
>>>
>>> on FormatName(TheNom, pTheFormat) (*Retourne le texte en ajoutant une majuscule initiale à chaque
>>> mot du texte et convertit les autres caractères en minuscules le cas échéant*)
>>> try
>>> if TheNom is in {"", "msng", "missing value"} then
>>> return ""
>>> else
>>> set NewName to my changecase(TheNom, pTheFormat)
>>> --if pTheFormat is "upper" then
>>> -- set NewName to my ChangeAccentedCapitals(NewName)
>>> --end if
>>> end if
>>> return NewName
>>> on error
>>> return ""
>>> end try
>>> end FormatName
>>>
>>> on changecase(txt, mode) --Le second argument peut être: "upper", "lower", "title", "capitalize"
>>> set oTIDs to AppleScript's text item delimiters
>>> try
>>> set toReplace to {"ß", "É", "È", "Ë", "Ê", "Ç"}
>>> set replaceBy to {"SS", "E", "E", "E", "E", "C"}
>>> repeat with i from 1 to count items of toReplace
>>> set beforeChar to item i of toReplace
>>> if mode is "upper" and txt contains beforeChar then
>>> -- log "before process" & space & txt
>>> set oTIDs to AppleScript's text item delimiters
>>> set AppleScript's text item delimiters to beforeChar
>>> set l to text items of txt
>>> set AppleScript's text item delimiters to item i of replaceBy
>>> set txt to "" & l
>>> set AppleScript's text item delimiters to oTIDs
>>> --log "after process" & space & txt
>>> end if
>>> end repeat
>>> on error
>>> set oTIDs to AppleScript's text item delimiters
>>> end try
>>>
>>> set python_cmd to "import sys; print sys.argv[1].decode('utf8')." & mode & "().encode('utf8')"
>>> return do shell script "/usr/bin/python -c " & quoted form of python_cmd & " " & quoted form of txt
>>> end changecase
>>> —FIN SCRIPT
>
>
> _______________________________________________
> Applescript_fr mailing list
> Applescript_fr@???
> http://listes.patpro.net/mailman/listinfo/applescript_fr


_______________________________________________
Applescript_fr mailing list
Applescript_fr@???
http://listes.patpro.net/mailman/listinfo/applescript_fr