2

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

我的第一个问题是我可以这样编辑/修改联系人/人员吗?我的第二个问题是,对于这种工作,我还可以使用 AppleScript 甚至 PyObjC(或其他)使用 ScriptingBridge 与联系人应用程序对话来更改联系人。这会比使用“低级”API 更好吗?

编辑 我尝试了更多方法,普通的旧 AppleScript 和使用 ScriptingBridge 的 Python。我对联系人进行脚本修改的所有方法都失败了,即使我调用了通讯簿的 save() 方法。我是否需要编辑一些系统设置以允许为联系人编写脚本?

编辑 作为记录,我正在运行 OS X Mountain Lion 10.8.3

4

1 回答 1

0

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

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

(电子邮件和身份证当然改变了)。我在 OS X 偏好设置中设置了一个“Facebook”帐户。根据有根据的猜测,我删除了这个 Facebook OS X 帐户,然后重新添加了它。之后,上面的脚本就可以正常工作了。

于 2013-06-17T20:35:58.253 回答