2015-10-12 10 views
1

Я использую следующий код из Craig Smith:Как использовать Applescript удалить разговоры, отправители содержат только 4 номера из приложения Messages от Apple

set chatsToKill to {} 
tell application "Messages" 
    set allChats to every chat 
    repeat with eachChat in allChats 
    set thePeeps to participants of eachChat 
    repeat with oneParticipant in thePeeps 
     if oneParticipant's handle contains "@" then 
      if chatsToKill does not contain eachChat's id then set end of chatsToKill to eachChat's id 
     end if 
    end repeat 
    end repeat 
    repeat with deathChat in chatsToKill 
     delete item 1 of (get every chat whose id = deathChat) 
    end repeat 
end tell 

мне было интересно, если есть способ, чтобы удалить беседы из отправители, которые имеют только 4 цифры в своем дескрипторе пользователя?

4 цифры всегда меняются и не совпадают. Я пробовал разные подстановочные знаки, но обнаружил, что Applescript их не поддерживает.

ответ

0

Это решение использует регулярное выражение. Если нет совпадений, возникает ошибка, которая игнорируется

set chatsToKill to {} 
tell application "Messages" 
    set allChats to every chat 
    repeat with eachChat in allChats 
     set thePeeps to participants of eachChat 
     repeat with oneParticipant in thePeeps 
      set theHandle to handle of oneParticipant 
      try 
       do shell script "echo " & quoted form of theHandle & " | egrep ^[0-9]{4}$" 
       if chatsToKill does not contain eachChat's id then set end of chatsToKill to eachChat's id 
      end try 
     end repeat 
    end repeat 
    repeat with deathChat in chatsToKill 
     delete item 1 of (get every chat whose id = deathChat) 
    end repeat 
end tell