Попробуйте это, он создаст контакт с правильным именем, фамилией и адресом электронной почты:
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
Было несколько проблем с вашей первоначальной попыткой, вот как я их обошел.
- Для начала,
selection
дает вам список элементов (даже если это просто список из одного), поэтому вам нужно выбрать первый элемент из выбора.
- В почте
sender
выдает не очень полезную строку, объединяющую имя и адрес электронной почты. extract name from
и extract address from
дать вам полезные строки.
- Строка имени является полным именем, но Contacts.app ожидает отдельное имя и фамилию, поэтому я разделил эту строку (используя удобную функцию, найденную здесь ), чтобы сделать правильное предположение по имени и фамилии. Это может дать неожиданные результаты от странно отформатированных имен в электронных письмах.
Если у вас есть какие-либо проблемы с этим, дайте мне знать, и я посмотрю, смогу ли я их исправить. В будущем, возможно, будет полезно запустить сценарии в редакторе AppleScript и проверить журнал событий для получения подробной информации о том, что не работает (сообщения об ошибках полезны, хотя бы для того, чтобы поместить их в Google или дать другим отправную точку для решения вашей проблемы).