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 :

Ouvrir une fiche de Contact dont on a le nom ou prénom


Sujet :

AppleScript

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Auditeur informatique
    Inscrit en
    Novembre 2014
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Auditeur informatique

    Informations forums :
    Inscription : Novembre 2014
    Messages : 32
    Points : 37
    Points
    37
    Par défaut Ouvrir une fiche de Contact dont on a le nom ou prénom
    Tout est dans le titre. Je vous re-sollicite préparant une espèce de giga-programme en Applescript destiné à accéder + facilement à des tas de données. Tout cela est légal bien sûr
    Donc j'ai ouvert le programme Adresse Book et j'ai le nom ou le prénom d'un titulaire: je cherche juste à ouvrir sa fiche. Ça se révèle + difficile que prévu. J'ai essayé de fouiner du côté de qq instructions et sur Internet , je trouve rien. Les data sont rangées dans un fichier qu'on peut symboliser ainsi:
    set [Database_Contact to ((path to application support folder) as string) & "Address Book :AddressBook.data"

    Si on fait après avoir fait une liste des contacts et sélectionné un nom en Applescript :
    set thePeople to selection
    ...on obtient bien le codage de la fiche avec un id du genre {person id "86D66DB6-5F67-4C8E-9635-F27C9030D1CD:ABPerson"}. Mais après pour ouvrir la fiche avec cet Id ?

    Mais là je bloque. Toute aide est bienvenue. J'ai essayé de jouer avec les instructions open (vcard..., ou alors open Database_Contact with vcard which surname is...
    Ça donne rien.

  2. #2
    Membre éprouvé

    Homme Profil pro
    Directeur de projet
    Inscrit en
    Septembre 2010
    Messages
    602
    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 : 602
    Points : 1 239
    Points
    1 239
    Par défaut
    Bonjour,
    Le carnet d'adresse est puissant, mais sa partie scriptable est limitée à certaines actions.
    En particulier, son interface utilisateur est extrêmement riche afin d'être simple pour l'utilisateur (on se demande d'ailleurs pourquoi tu veux ré-inventer la roue en créant ta propre interface).

    Tu as donc 2 solutions :
    1) lire et écrire les champs de la fiche que tu as sélectionnée : pour cela Applescript fonctionne, tu peux lire les champs, les changer, boucler sur des fiches, etc ... Mais tu dois ajouter une belle interface utilisateur pour la saisie; l'interface utilisateur n'est pas le point fort de AS !

    2) utiliser Applescript pour sélectionner les fiches à modifier, puis donner la main au carnet d'adresse et à l'utilisateur pour profiter de l'interface déjà créée.

    Dans le second cas, pour modifier une fiche de la sélection, il faut la sélectionner seule, (elle est alors modifiable dans la fenêtre) ou utiliser la simulation clavier pour ouvrir cette fiche dans une fenêtre à part.

    Le script exemple ci-dessous suppose une sélection d'au moins 5 fiches (issue d'une action précédente), puis ne sélectionne que la 4ème.
    Ensuite, 2 actions clavier, l'une pour passer à la fiche suivante (donc la 5ème !!) et l'autre pour l'ouvrir dans une fenêtre à part :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    tell application "Address Book"
    activate
        set Mes_Fiches to selection
        set selection to item 4 of Mes_Fiches
        tell application "System Events" to keystroke ">" using {command down}
        tell application "System Events" to keystroke "i" using {command down}
    end tell
    En connaissant davantage ce que tu comptes faire, il y a peut être d'autres approches possibles ...

    Cordialement

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Auditeur informatique
    Inscrit en
    Novembre 2014
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Auditeur informatique

    Informations forums :
    Inscription : Novembre 2014
    Messages : 32
    Points : 37
    Points
    37
    Par défaut
    Citation Envoyé par PBELL Voir le message
    Bonjour,
    Le carnet d'adresse est puissant, mais sa partie scriptable est limitée à certaines actions.
    En particulier, son interface utilisateur est extrêmement riche afin d'être simple pour l'utilisateur (on se demande d'ailleurs pourquoi tu veux ré-inventer la roue en créant ta propre interface).

    Tu as donc 2 solutions :
    1) lire et écrire les champs de la fiche que tu as sélectionnée : pour cela Applescript fonctionne, tu peux lire les champs, les changer, boucler sur des fiches, etc ... Mais tu dois ajouter une belle interface utilisateur pour la saisie; l'interface utilisateur n'est pas le point fort de AS !

    2) utiliser Applescript pour sélectionner les fiches à modifier, puis donner la main au carnet d'adresse et à l'utilisateur pour profiter de l'interface déjà créée.

    Dans le second cas, pour modifier une fiche de la sélection, il faut la sélectionner seule, (elle est alors modifiable dans la fenêtre) ou utiliser la simulation clavier pour ouvrir cette fiche dans une fenêtre à part.

    Le script exemple ci-dessous suppose une sélection d'au moins 5 fiches (issue d'une action précédente), puis ne sélectionne que la 4ème.
    Ensuite, 2 actions clavier, l'une pour passer à la fiche suivante (donc la 5ème !!) et l'autre pour l'ouvrir dans une fenêtre à part :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    tell application "Address Book"
    activate
        set Mes_Fiches to selection
        set selection to item 4 of Mes_Fiches
        tell application "System Events" to keystroke ">" using {command down}
        tell application "System Events" to keystroke "i" using {command down}
    end tell
    En connaissant davantage ce que tu comptes faire, il y a peut être d'autres approches possibles ...

    Cordialement
    Ça s'inscrit dans un projet encore plus vaste en fait d'une interface simplifiée d'utilisateur qui aurait plusieurs items de menu différents: itunes, carnet d'adresses, videos, etc. et qui pourrait déclencher telle ou telle action sans sortir de l'interface. Histoire de pouvoir facilement choisir un titre iTunes tout en choisissant une personne dans Contact à qui on veut écrire ou communiquer via FaceTime, ce genre de trucs sans sortir du même programme que j'essaie de réaliser. Je pense écrire l'interface avec Xcode en Cocoa ou Objective-C, je sais plus. Là on peut faire de belles interfaces.

    Merci mais j'ai dû mal m'expliquer. Mon prog AS ouvre une liste (encore une!) contenant toute la liste des contacts triés par ordre alphabétique récupérés dans Carnet d'adresses. Il sélectionne un nom et je voudrais que mon prog ouvre cette fiche sélectionnée mais pas celle en cours dans le carnet d'adresses. C'est pour cela que je cherche une bidouille pour que d'après un nom+prénom, on puisse ouvrir la fiche concernée mais pas celle en cours sélectionnée par Contact dans Address Book. Me suis pas suffisamment expliqué dans mon post précédent en fait.
    Je me suis dit qu'avec un algorithme finalement simple ça doit marcher, genre:
    —Parcourir dans Carnet d'adresses toutes les fiches depuis le début jusqu'à trouver celle sélectionnée par l'utilisateur dans sa liste fournie par AS.
    —Quand les nom et prénom correspondent l'ouvrir dans Carnet d'Adresses.

    Mais pas si simple à faire que ça. Ça doit marcher non avec la commande ? ==>:
    tell application "System Events" to keystroke "i" using {command down}

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Auditeur informatique
    Inscrit en
    Novembre 2014
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Auditeur informatique

    Informations forums :
    Inscription : Novembre 2014
    Messages : 32
    Points : 37
    Points
    37
    Par défaut
    Ça y est ça marche . Merci monsieur: cette instruction est la base de tout effectivement.
    En fait AS offre une synthétisation proche des SQL ou de certains langages objet et qui emprunte beaucoup au langage, ce qui en fait un langage sympa à utiliser.
    Je cherchais comment séparer les noms et prénoms dans un champ comme "André Dupont" intitulé "Choix" et les assigner chacun dans une variable différente... Me suis creusé la tête et essayé des trucs compliqués, des tonnes de bugs au passage, alors que c'est tout simple.==>

    set Prenom_Choix to (first word of Choix)
    set Nom_Choix to (last word of Choix)

    Et ça roule!

  5. #5
    Membre éprouvé

    Homme Profil pro
    Directeur de projet
    Inscrit en
    Septembre 2010
    Messages
    602
    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 : 602
    Points : 1 239
    Points
    1 239
    Par défaut
    Bonsoir,
    Pour sélectionner une fiche à partir du nom et prénom, il suffit du script ci-dessous :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    -- assignation pour la recherche
    set Nom to "Dupont"
    set Prenom to "Albert"
    
    --recherche est affichage (si au moins 1 fiche correspond à la recherche)
    tell application "Address Book"
    activate
        set Ma_Selection to every person whose ((last name is Nom) and (first name is Prenom))
        if (count of Ma_Selection) > 0 then
            set selection to item 1 of Ma_Selection
            tell application "System Events" to keystroke "i" using {command down}
        end if
    end tell
    Cordialement

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Auditeur informatique
    Inscrit en
    Novembre 2014
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Auditeur informatique

    Informations forums :
    Inscription : Novembre 2014
    Messages : 32
    Points : 37
    Points
    37
    Par défaut
    Re-merci. Ça marche effectivement même si on peut se dire que les instructions:

    set Ma_Selection to every person whose ((last name is Nom) and (first name is Prenom))
    if (count of Ma_Selection) > 0 then

    sont un peu redondantes car on n'imagine pas deux fiches pour la même personne portant le même nom et prénom.

    Quoique... En fait on sait jamais. Un jour j'ai rencontré quelqu'un à Paris qui était l'homonyme complet de mon père. Il faut dire que mon nom de famille est assez répandu en France ceci dit.

    Bonne journée et que pensez-vous de mon projet ? Un prog avec Interface Cocoa (on peut en faire de pas mal avec Xcode) avec des choix pour naviguer facilement et surtout effectuer certaines actions beaucoup plus rapidement qu'en passant par le Finder comme ouvrir le dossier Applications pour lancer des progs: en gros un outil pour utilisateurs et développeurs afin d'inspecter le contenu du Mac au niveau de listes fournies par AS de façon rapide et ergonomique.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. impossible d'ouvrir une fiche par utilisateur
    Par delfinition dans le forum Bases de données
    Réponses: 10
    Dernier message: 21/03/2010, 08h05
  2. Ouvrir une fiche au lieu d'une autre
    Par AmisNoob dans le forum Débuter
    Réponses: 2
    Dernier message: 22/10/2009, 21h58
  3. [AC-2002] Ouvrir une fiche a partir d'un formulaire mode feuille
    Par Alinou64 dans le forum VBA Access
    Réponses: 2
    Dernier message: 10/09/2009, 11h38
  4. Réponses: 6
    Dernier message: 20/12/2007, 15h04
  5. [CF]Comment faire une fiche de "Contact" ?
    Par yannick_frere dans le forum Windows Mobile
    Réponses: 2
    Dernier message: 13/11/2006, 20h50

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