Applescript - Contatti: Perché posso ottenere indirizzi ed email da un contatto ma non dai telefoni

2

Errori durante il recupero dei telefoni

In Script Editor, se corro:

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

il risultato è:

"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:[email protected]
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
"

Si noti che questa persona ha un indirizzo email e un numero di telefono. Se corro:

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

il risultato è:

{"[email protected]"}

Tuttavia se corro:

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

Ottengo

error "Contacts got an error: Can’t get value of every phone of person 301." number -1728 from value of every phone of person 301

e se corro

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

error "Contacts got an error: AppleEvent handler failed." number -10000

Che cosa succede se la persona non ha un numero di telefono?

Modifica: In base a una delle risposte proposte a questo post, ho provato

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

che mi ha dato qualcosa di simile

{missing value, {}, missing value, missing value, ...}

con molti più "valori mancanti" e "{} s" perché ho circa 2000 voci nel database.

Esaminando ciò, ho scoperto che il "valore mancante" viene visualizzato per le persone che hanno numeri di telefono e "{}" viene visualizzato per le persone che non hanno numeri di telefono. Se eseguo lo stesso comando con "email", ottengo un elenco di indirizzi email per ogni persona che ha email e un elenco vuoto "{}" per le persone che non lo fanno.

Questo è su Mac OS 10.13.6, Contatti 11.0 (1808.8).

Ho scoperto un bug o c'è qualcosa di sbagliato nel mio script?

    
posta highfalutin 09.09.2018 - 03:23
fonte

1 risposta

-1

Questo dovrebbe funzionare per te ...

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

Questo funziona anche per me ...

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

Puoi anche provare a eseguire questo codice seguente

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

Quindi andrai all'articolo 301 di quel risultato e se non c'è alcun numero di telefono ... Questo potrebbe essere il motivo per cui hai ricevuto l'errore.

    
risposta data 09.09.2018 - 04:47
fonte

Leggi altre domande sui tag