如何使用PyObjC修改ABPerson实例?

2024-10-04 11:28:36 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试在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


Tags: 方法脚本编辑abfoo地址编程联系人
1条回答
网友
1楼 · 发布于 2024-10-04 11:28:36

回答我自己的问题。运行上述脚本后,查看控制台中的错误,我看到许多错误如下所示:

AOSKit ERROR: (-) RAF: Invalid url   https://[myemail]@webdav.facebook.com/[myfbid]/contacts/

(电子邮件和身份证当然更改了)。我在OSX首选项中设置了一个“Facebook”帐户。经过深思熟虑,我删除了这个Facebook OS X帐户,然后重新添加了它。之后,上面的脚本就可以正常工作了。在

相关问题 更多 >