【问题标题】:How to modify an ABPerson instance using PyObjC?如何使用 PyObjC 修改 ABPerson 实例?
【发布时间】:2013-06-12 23:19:23
【问题描述】:

我正在尝试对 OS X 上的一个非常大的地址簿进行一些修复。我想以编程方式进行此操作,因为手动操作将是一项非常艰巨的工作。凭直觉,我想我可能会为此使用 PyObjC,因为我对 Python 很熟悉。

我可以使用 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

【问题讨论】:

标签: python objective-c macos applescript


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-11
    • 2020-04-25
    • 2016-08-08
    • 1970-01-01
    • 2021-02-16
    相关资源
    最近更新 更多