【问题标题】:Removing People from Contacts Group (in Mac Address Book)从联系人组中删除人员(在 Mac 通讯簿中)
【发布时间】:2013-10-08 19:04:19
【问题描述】:

这是我在 stackoverflow 中的第一篇文章。我花了数周时间试图让 Applescript 从联系人(Mac 地址簿)中已建立的组(不是智能组)中删除人员。该脚本删除了几个人,然后发出错误。如果我在发出错误后重新运行脚本,它将从组中删除更多人,然后再次发出相同的错误。我可以继续这样做,直到最终每个人都从组中删除。我不明白为什么在发出错误后重新运行脚本时会发出错误,导致在再次发出错误之前又删除了几个人。 - 再一次,我可以继续重新运行脚本,直到最终每个人都从组中删除。这表明联系人记录没有损坏。

我尝试移动 SAVE 命令,但没有帮助。我要从中删除联系人的组标记为“家庭”。

发出的错误是... 错误“联系人出现错误:无法获取组\“家庭\”。” “家庭”组中的编号 -1728

tell application "Contacts"
    set group_list to name of every group

    repeat with anItem in group_list
        set AppleScript's text item delimiters to ""
        repeat 1 times
            if first item of anItem is not "$" then exit repeat

            set AppleScript's text item delimiters to "$"
            set gruppe to text item 2 of anItem
            if group gruppe exists then

                --remove every person from group
                repeat with person_to_remove in every person in group gruppe
                    set firstName to first name of every person in group gruppe
                    set group_count to count every person in group gruppe
                    remove person_to_remove from group gruppe
                    save
                end repeat

            end if

        end repeat

    end repeat
    save
    return "Done"
end tell

【问题讨论】:

  • 脚本哪里出现这个错误?
  • 脚本中的“remove person_to_remove from group gruppe”行出现错误。 Applescript 编辑器突出显示该行并发出以下错误...错误“联系人出错:无法获取组 \"Family\"。”来自“家庭”组的编号 -1728。奇怪的是,如果我重新运行脚本(在发出错误之后),脚本会在再次出错之前从组中删除其他人。如果我多次重新运行脚本,它最终会从组中删除每个人。如果联系人记录有问题,为什么它最终会删除所有人?

标签: macos applescript contacts addressbook


【解决方案1】:

我认为你正在努力。无需更改 applescripts 文本项分隔符,您仍然可以找出该组是否以 $a 开头的组名

创建一个 1 次循环很奇怪,不知道你为什么选择这样做。

您知道该组已经存在,因为您正在循环访问它们,所以也不需要这样做

原来是这样

tell application "Contacts"
    set group_list to name of every group

    repeat with aGroup in group_list
        if first item of aGroup is "$" then
            set thePeople to every person in group aGroup

            repeat with aPerson in thePeople
                remove aPerson from group aGroup
            end repeat

        end if
    end repeat
    save
end tell

【讨论】:

  • 谢谢你,麦格莱姆!有效!我是脚本新手,但向 google、youtube 和像你这样的专业人士学习。我的脚本的其余部分(此处未显示)将人们从以“$”开头的智能组复制到非智能组......因此是分隔符。然后,非智能组通过 iCloud 同步到 iPhone 和 iPad。我确实注意到的一件事是,当我通过 AppleScript 在联系人中创建一个非智能组时,我必须在将人员添加到组之前将“保存”和“延迟 10”秒添加到脚本中......否则新添加的人会从新添加的人中消失10秒后分组。我应该使用其他命令吗?
  • 我关于分隔符的观点是它可以在不更改分隔符的情况下读取第一个字符,只需记住在完成后将它们设置回来。我通常将它们存储在一个 var 中,这样我就可以将它们设置回来,就像将 tid 设置为 applescript 的文本项分隔符
  • 您好。作为这个论坛的新手,这将是我第一次接受。我在哪里/如何做到这一点?我看了又看,但没有看到 ACCEPT 或类似的按钮。哈哈。谢谢! :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-09-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多