Скрипт для удаления всех групп в контактах

Я хотел бы иметь скрипт для удаления всех моих групп в моих контактах. Каким-то образом я получил своего рода ошибку репликации, в результате которой было более 500 групп.
Удалять их по одному не вариант.

Пробовал этот скрипт, но он не работает, мне нужно вводить названия многих групп, и через некоторое время скрипт останавливается, даже если не все группы были удалены.

tell application "Contacts" 
repeat 50 times 
set theGroup to group "MyGroupName" 
delete theGroup 
end repeat 
save
end tell

Любая помощь будет высоко ценится.

Ответы (1)

Причина, по которой скрипт не удаляет все фиктивные группы, заключается в том, что он повторяется только 50 раз, поэтому он удалит только 50 за один раз.

Этот сценарий удалит каждую группу с введенным вами именем (он запрашивает вас в диалоговом окне), пока не сможет найти больше:

set counter to 0
display dialog "Name of group to delete?" default answer ""
set theGroupName to text returned of result
tell application "Contacts"
    repeat
        try
            set theGroup to group theGroupName
            delete theGroup
            set counter to counter + 1
        on error
            exit repeat
        end try
    end repeat
    save
    display dialog "Removed " & counter & " instances of the group" with icon caution buttons {"OK"} default button "OK"
end tell
Даниил Спасибо, отлично работает. Даже когда я повторял свой сценарий несколько раз, он не работал. Спасибо за ваше решение. Самые ценные
У меня было несколько названий групп: "<Z name=/syncservicesagent/NoCategoryLabel comment='та же метка, которая используется для элемента "Нет категории" в списках категорий'>Нет категории</Z>". Простой скрипт не работал, но вышеупомянутый более длинный сделал свое дело. Спасибо, что поделились.