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>
私の最初の質問は、この方法で連絡先/人物を編集/変更できますか? 2 番目の質問は、この種の作業では、ScriptingBridge を使用して連絡先アプリと通信し、AppleScript または PyObjC (またはその他) を使用して、連絡先を変更することもできるということです。これは、「低レベル」API を使用するよりも優れた方法でしょうか?
編集 ScriptingBridge を使用して、さらにいくつかの方法、単純な古い AppleScript、および Python を試しました。アドレス帳の save() メソッドを呼び出しても、連絡先の変更をスクリプト化するメソッドはすべて失敗します。連絡先をスクリプト化できるようにするには、システム設定を編集する必要がありますか?
編集 記録のために、私はOS X Mountain Lion 10.8.3を実行しています