Я случайно добавил около 600 контактов в свой адресный адрес Mac с iPhone друга. Я синхронизировал свой Mac несколько недель назад. К сожалению, у меня нет резервной копии моих контактов, и теперь все они синхронизированы с моим iPhone и iCloud. Я смог экспортировать все нежелательные контакты в виде файлов «.vcf» из моего телефона друзей, поэтому у меня есть около 600 файлов, таких как «John Doe.vcf», а также простой текстовый список только имен контактов.Applescript для удаления контактов из списка
В идеале мне нужен сценарий, который соответствует данным внутри файла VCF, чтобы убедиться, что я удаляю правильный контакт.
Идея # 2 будет удалить контакты, который соответствует имени в списке, пропуская поиски, которые возвращают два или больше результатов (таким образом я не потерять свои контакты с таким же именем, как и мой друг)
I начиная с attempint, чтобы удалить один контакт, используя следующий applescript, но не повезло. Пожалуйста помоги!
set daName to "John Doe"
tell application "Contacts"
repeat with onePerson in people
if (value of name of onePerson) is daName then
delete onePerson
end if
end repeat
end tell
--UPDATE--
Вот окончательный код, который я использовал для выполнения этой задачи. Я добавил цикл вверху, который циклически перебирает список имен, скопированных в буфер обмена. Я также добавил имя дублированного контакта в диалоговом окне, чтобы я мог принять к сведению его.
Советы:
- Сделать резервную копию всех ваших контактов перед запуском сценария.
- Если вы хотите, чтобы количество контактов «магически» уменьшалось во время запуска скрипта, прокрутите вниз до ваших контактов в вашей адресной книге, и вы увидите количество контактов .
ЗАВЕРШЕНИЕ КОД
set the clipboard to (the clipboard as text)
set the_strings to the clipboard
repeat with this_string in paragraphs of the_strings
set daName to this_string
DeleteContact(daName)
end repeat
on DeleteContact(theName)
tell application "Contacts"
set myList to every person whose name is theName
set Nb to count of myList
if Nb = 0 then return -- no record found
if Nb > 1 then
display dialog theName & " (too many found: do nothing)"
else
set myperson to item 1 of myList -- only 1 found to be deleted
delete myperson
save
end if
end tell
end DeleteContact
Спасибо PBELL !! Это решило мою проблему и сэкономило много часов на очистке моих контактов вручную. Я внес некоторые небольшие изменения в код, я отправлю их, чтобы помочь кому-то еще в той же ситуации. – Gio