我正试图对OS X上的一个非常大的地址簿进行一些修复。我想通过编程来完成这个任务,因为这将是一项非常紧张的手工工作。凭直觉,考虑到我对Python的熟悉程度,我想我可能会为此使用PyObjC。
我可以使用PyObjC的模块AddressBook四处走动,但我似乎无法做任何更改:
>>> import AddressBook
>>> ab = AddressBook.ABAddressBook.addressBook()
>>> p = ab.people()[0]
>>> p.isReadOnly()
True
>>> p.valueForProperty_('First')
u'Foo'
>>> p.setValue_forProperty_('Bar', 'First')
False
>>> p.valueForProperty_('First')
u'Foo'
>>> type(p)
<objective-c class ABPerson at 0x7fff76e01ab8>我的第一个问题是,我可以这样编辑/修改联系人/人吗?我的第二个问题是,对于这类工作,我还可以使用ScriptingBridge对联系人进行更改,使用AppleScript或甚至PyObjC (或其他)与联系人应用程序对话。这会比使用“低级”API更好吗?
编辑--我尝试了几种方法,普通的AppleScript和使用ScriptingBridge的ScriptingBridge。我为联系人编写修改脚本的所有方法都失败了,即使当我调用通讯簿的save()方法时也是如此。我是否需要编辑某些系统设置以允许编写联系人脚本?
编辑记录,我正在运行OS山狮10.8.3
发布于 2013-06-17 20:35:58
回答我自己的问题。在运行上述脚本之后,查看控制台中的错误,我看到许多错误如下所示:
AOSKit ERROR: (-) RAF: Invalid url -- https://[myemail]@webdav.facebook.com/[myfbid]/contacts/(电子邮件和身份证当然变了)。我在OS首选项中设置了一个“Facebook”帐户。据我所知,我删除了这个Facebook OS X账户,然后重新添加它。之后,上面的脚本就可以正常工作了。
https://stackoverflow.com/questions/17140148
复制相似问题