新版:連絡先.appのデータをとりだす 7月5日, 2020
昔、当時の「アドレスブック.app」のデータをExcelに読み込むためのスクリプトを利用していた。いや、必要があれば今でも使うのだけど。今回、csvファイルをvCardファイルを経由して「連絡先.app」に収納するpythonで遊んだ余勢をかって、逆にvCardからcsvファイルを作成するプログラムも書いてみた。ただし、初心者のことでもあり、macOSでの使用しか考えていないこともあって、汎用性はほとんどないし、かなり無骨で、エレガントな所など全くないものだ。
「連絡先.app」から"書き出す>vCardを書き出す…"でvcfファイルを用意する。プログラムを起動すると、vcfファイル読み取り用のダイアログが開くので用意したファイルを指定する。続けて変換したcsvファイル保存のダイアログが開くので保存先を指定する。
出力されるcsvファイルのカラム構成は、
[姓, 名, 敬称, 姓の読み, 電話, Email, 郵便番号, 住所[都道府県, 市区, 町村, 番地], 連名]
となっている。他の項目が必要な場合は工夫を要する。
■制約事項
・名の読みは移せない
・電話, email, 住所, 連名は各1件のみ
・保存先のcsvファイルは新規ファイルを指定のこと。既存ファイルを指定するとみっともなくエラー。
この制約の3点目のasksaveasfilenameの不具合にからむ問題は、例外処理ではない解決方法を見つけたいと思っている(が難しそう)。Linuxの場合なら stackoverflow にあるようにfiledialog.pyに手を入れることで乗り切れるらしいことを見つけたが、コメントが付いているようにmacOSでは解決しない。確かにfiledialog.pyの修正は無効だった。
【追記】asksaveasfilename 1月15日, 2021 ふと気づいた。Big Surに上げたからか,何かのupdateが効いてくれたのか,asksaveasfilenameのダイアログが普通に動作するようになっていた。vcf2csv,csv2vcf,ともに同じファイル名を指定してもきちんと動作する。よかった。