如何使用 Applescript 从消息应用程序中删除其发件人包含电子邮件地址的对话

How to use Applescript to delete Conversations whose senders contain email addresses from the Messages app

我想使用 applescript 删除使用电子邮件地址向我发送消息的人的对话。我想保留所有来自手机号码的对话,但删除所有对话,其中我的联系人是一个电子邮件地址。

我试过:

tell application "Messages"
    tell every item
        delete (every item whose sender contains ".com")
    end tell
    save
end tell

所有可编写脚本的应用程序都有一个 AppleScript 词典,可以通过 Window --> 库菜单从脚本编辑器访问它。通读应用程序的字典可以帮助您获得正确的术语来生成脚本来执行您的命令。

下面的脚本将成功创建所有聊天(对话)的聊天 ID 列表,其中至少有一个参与者正在使用电子邮件地址。我没有测试删除部分,因为我对删除任何东西都不感兴趣。我强烈建议您 运行 Time Machine 或其他备份服务 执行脚本的那部分之前,以防出现意外结果。

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