我正在尝试在OSX上对一个非常大的地址簿进行一些修复。我希望以编程的方式进行修复,因为这将是一个非常紧张的手工操作。基于直觉,我想我可能会使用PyObjC来实现这一点,因为我对Python很熟悉。在
我可以使用PyObjC的模块地址簿四处查看,但似乎无法进行任何更改:
>>> 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和Python使用ScriptingBridge。所有编写联系人修改脚本的方法都失败了,即使我调用了地址簿的save()方法。是否需要编辑某些系统设置以允许对联系人编写脚本?在
编辑 作为记录,我运行的是OSXMountainLion10.8.3
回答我自己的问题。运行上述脚本后,查看控制台中的错误,我看到许多错误如下所示:
(电子邮件和身份证当然更改了)。我在OSX首选项中设置了一个“Facebook”帐户。经过深思熟虑,我删除了这个Facebook OS X帐户,然后重新添加了它。之后,上面的脚本就可以正常工作了。在
相关问题 更多 >
编程相关推荐