Applescript - Contacts: Pourquoi puis-je obtenir les adresses et les courriels d'un contact mais pas d'un téléphone?


2

Erreurs lors de l'obtention d'un téléphone

Dans l'éditeur de script, si je lance:

tell application "Contacts" to get the vcard of person 301

le résultat est:

"BEGIN:VCARD VERSION:3.0 PRODID:-//Apple Inc.//Mac OS X 10.13.6//EN
N:Bar;Foo;;; FN:Foo Bar
EMAIL;type=INTERNET;type=WORK;type=pref:foobar@gmail.com
TEL;type=HOME;type=VOICE;type=pref:555 555 1212
CATEGORIES:Address Book
UID:1e6e6e410a662666
X-ABUID:18B18941-E2B7-48CE-BB34-4A26CC0E23BB:ABPerson
END:VCARD
"

Notez que cette personne a une adresse électronique et un numéro de téléphone. Si je cours:

tell application "Contacts" to get the value of emails of person 301

le résultat est:

{"foobar@gmail.com"}

Cependant si je cours:

tell application "Contacts" to get the value of phones of person 301

Je reçois

error "Les contacts ont une erreur: Impossible d'obtenir la valeur de chaque téléphone de la personne 301." numéro -1728 de la valeur de chaque téléphone de la personne 301

et si je cours

tell application "Contacts" to get the phones of person 301

error "Les contacts ont eu une erreur: le gestionnaire AppleEvent a échoué." numéro -10000

Que se passe-t-il si la personne n'a pas de numéro de téléphone?

Edit: Basé sur l’une des réponses proposées à ce post, j’ai essayé

tell application "Contacts"
    set thePhoneNumber to value of phones of people
end tell

qui m'a donné quelque chose comme

{ Valeur manquante , {}, valeur manquante , valeur manquante , ...}

avec beaucoup plus de "valeurs manquantes" et "{} s" car j'ai environ 2000 entrées dans la base de données.

En recherchant cela, j'ai trouvé que la "valeur manquante" apparaît pour les personnes qui ont un numéro de téléphone et le "{}" pour les personnes qui n'ont pas de numéro de téléphone. Si j'exécute la même commande avec "emails", j'obtiens une liste d'adresses électroniques pour chaque personne ayant des e-mails et une liste vide "{}" pour les personnes qui n'en ont pas.


C'est sous Mac OS 10.13.6, Contacts 11.0 (1808.8).

Ai-je découvert un bogue ou y a-t-il un problème avec mon script?


Il s'agit d'un bogue dans les contacts , que vous pouvez signaler à Apple (plus il y a de personnes qui déposent des rapports de bogue, plus elles ont tendance à donner la priorité à la résolution du problème). Vous devrez peut-être analyser les données vCard vous-même pour récupérer le numéro de téléphone.
CJK

1
@CJK merci, j'ai utilisé bugreport.apple.com pour soumettre un rapport de bogue.
highfalutin

Réponses:


-1

Cela devrait fonctionner pour vous ...

tell application "Contacts"
    launch
    delay 1
    tell its person 301
        try
            set thePhoneNumber to value of phones
        end try
    end tell
end tell

Cela fonctionne aussi pour moi ...

tell application "Contacts"
    set thePhoneNumber to value of phones of its person 301
end tell

Vous pouvez également essayer d'exécuter ce code suivant

tell application "Contacts"
    set thePhoneNumber to value of phones of people
end tell

Ensuite, vous passerez à l'item 301 de ce résultat et s'il n'y a pas de numéro de téléphone ... C'est peut-être pour cela que vous obtenez l'erreur.


Le résultat est toujours l'erreur -10000, "Les contacts ont eu une erreur: le gestionnaire AppleEvent a échoué."
highfalutin

Mise à jour du code pour essayer cette nouvelle version
wch1zpink

Malheureusement, @ wch1zpink, le code ne fonctionne toujours pas sur ma machine. Voir les modifications que j'ai apportées à ma question.
highfalutin

Je ne sais pas trop quel est le problème. J'utilise exactement la même version du système d'exploitation et la même version des contacts. Avez-vous essayé le deuxième exemple de code dans ma réponse?
wch1zpink
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.