Prova questo, creerà un contatto con nome, cognome e indirizzo email corretti:
tell application "Mail"
set theMessages to selection
if theMessages is not {} then -- check empty list
set theSenderName to extract name from sender of item 1 of theMessages
set nameArray to my split(theSenderName, " ")
set theFirstName to item 1 of nameArray
set theLastName to last item of nameArray
set theEmail to extract address from sender of item 1 of theMessages
tell application "Contacts"
set theGroup to group "_TEST"
set thePerson to make new person with properties {first name:theFirstName, last name:theLastName}
make new email at end of emails of thePerson with properties {label:"Work", value:theEmail}
add thePerson to theGroup
save
end tell
end if
end tell
on split(theString, theDelimiter)
set oldDelimiters to AppleScript's text item delimiters
set AppleScript's text item delimiters to theDelimiter
set theArray to every text item of theString
set AppleScript's text item delimiters to oldDelimiters
return theArray
end split
Ci sono stati alcuni problemi con il tuo tentativo originale, ecco come ho lavorato intorno a loro.
- Per i principianti,
selection
ti fornisce un elenco di elementi (anche se è solo un elenco di uno), quindi devi scegliere il primo elemento dalla selezione.
- Nella posta,
sender
ti dà una stringa non molto utile con il nome e l'e-mail combinati. extract name from
e extract address from
ti danno stringhe utili.
- La stringa nome è il nome completo, ma Contacts.app si aspetta nomi e cognomi separati, quindi ho diviso quella stringa (usando una funzione utile trovata here ) per fare una discreta supposizione al primo e all'ultimo nome. Ciò potrebbe dare risultati imprevisti da nomi stranamente formattati nelle e-mail.
Se hai problemi con questo, fammelo sapere e vedrò se riesco a risolverli. In futuro, potrebbe essere utile eseguire gli script in AppleScript Editor e controllare il registro eventi per i dettagli su ciò che non funziona (i messaggi di errore sono utili, se non altro per mettere in Google o dare ad altri un punto di partenza per risolvere il problema).