auのアドレス帳をMacのAddressBook形式に変換するスクリプト
iPhone買ったよ!
W-ZERO3やad-esを使ってきた経験からスマートフォンをメイン機に使えるとは考えておらず、普通に2本目として新規契約したんだけど、今になってMNPで番号ごと変えてしまえばよかったかなーとか思ってます。まだあんまり使ってないけど!
で、今まで使っていたauのアドレス帳のデータをMacに吸い上げようと、データをvcfでmicroSDにバックアップして、Macのアドレスブックにインポートしたんだけど、色々と問題があった。
- ふりがなが無視される
- グループ情報が無視される
- [名字] [名前]とスペースで分割してあっても、まとめて名字になる
- 無視された情報がメモ欄に入って汚い
これはかなり問題がある。手動でふりがなやグループをつけてもいいのだけど、非コミュ傾向のある俺ですら155人のアドレス帳が入っている。相当面倒くさい作業だ。ちなみに、au携帯のアドレス帳をMacのアドレス帳に移行する。 | ゼロ・デザイニング [0-designing]で紹介されているau oneお預かりサービスを利用する方法も試してみたけど、こちらでもやはりグループ情報が無視された。
で、調べてみたところ、Apple アドレスブックは「ファイルインポート時に必ずグループ情報を無視する」らしい。これではグループ情報をインポートすることは不可能だ。
だけど、ファイルをグループにドラッグアンドドロップすることで、任意のvcfファイルを既存のグループに一括追加することは出来る。
ということは、vcfファイルを、カードのカテゴリ情報ごとに分割する事ができれば、あとは少しの手間でグループ分類つきインポートができる。
というわけで、分割するスクリプトを書いた
機能
- auの携帯電話の出力するAD_xxxx.VCFファイルを、グループごとのファイルに分割する。
- ふりがなをアドレスブックが読めるようにする
- ふりがな/氏名は、半角スペースで区切ってある場合姓・名に分ける。
- メモ欄にゴミがつかない
使い方
- auの携帯電話からアドレス帳のバックアップデータをPCに持ってくる(やり方は各自ググってください。au oneの吐くCVSじゃなく、バックアップで取れるVCFです。)
- 下のパールスクリプトをローカル(バックアップデータと同じ場所)に(au2ab.pl名で)保存し、以下のように実行する。
- perl au2ab.pl ./AD_0000.VCF(←アドレスデータ)
- グループごとのファイル([グループ名].vcf)が生成されます
- アドレスブックで任意のグループを作成し、グループ名.vcfをそこにドラッグアンドドロップする。
以上。
ソース
#!/usr/bin/perl use utf8; use Encode; binmode(STDOUT, ":utf8"); my $path= shift; my @lines; my $line; my $buffer; my %category; my $cat; open (FILE,'<:encoding(shiftjis)',$path); @lines = <FILE>; close(FILE); foreach $line(@lines){ if( $line =~ /^SORT\-STRING:([^\x20]+)\x20([^\x20]+)$/ ){ $line = "X-PHONETIC-LAST-NAME:$1\nX-PHONETIC-FIRST-NAME:$2\n"; } if( $line =~ /^N:([^\s]+)\s([^\s;]+);;;;/ ){ $line = "N:$1;$2;;;\n"; } $line =~ s/^SORT\-STRING/X\-PHONETIC\-LAST\-NAME/; $line =~ s/^X\-GNO.*//; $line =~ s/^X\-REDUCTION.*//; $line =~ s/^CLASS.*//; if( $line =~ /^X-GN:(.*)/){ $cat = $1; } $buffer .=$line; if( $line =~ /^END:VCARD/){ $category{$cat}.=$buffer; $buffer=''; } } foreach $cat (keys %category){ open (FILE, '>:encoding(utf8)',$cat.'.vcf'); print FILE $category{$cat}; close(FILE); }
わーいiPhoneに無事アドレス帳をインポートできたよー^o^!