Pruebe esto, se creará un contacto con nombre, apellido y dirección de correo electrónico adecuados:
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
Hubo algunos problemas con su intento original, aquí es cómo trabajé alrededor de ellos.
- Para empezar,
selection
te da una lista de elementos (aunque sólo sea una lista de uno), así que tienes que elegir el primer elemento de la selección.
- En el correo,
sender
te da una cadena no muy útil con el nombre y el correo electrónico combinados. extract name from
y extract address from
te dan cuerdas útiles.
- La cadena del nombre es el nombre completo, pero Contacts.app espera que se separen el nombre y el apellido, así que divido esa cadena (utilizando una práctica función que se encuentra aquí ) para hacer una conjetura decente sobre los nombres y apellidos. Esto puede dar resultados inesperados de nombres con formatos extraños en los correos electrónicos.
Si tienes algún problema con éste, házmelo saber y veré si puedo solucionarlo. En el futuro, puede ser útil ejecutar los scripts en el Editor de AppleScript, y comprobar el Registro de Eventos para obtener detalles sobre lo que está fallando (los mensajes de error son útiles, aunque sólo sea para poner en Google o dar a otros un punto de partida para resolver su problema).