ISW11SCを買った[記事]のだが、アドレス帳の移行で困ったのでプログラム作ってみた。SDカードで移せばって?それに気づいてたら、こんな記事読まなくても大丈夫だよ。
背景
ガラケー時代は、au oneアドレス帳[au]にバックアップをとるように同期してた。
Androidoに乗り換えたときも、これに同期すりゃいいじゃん!とか思ったら、このサービスはガラケー専用だった。
スマートフォンはどうすりゃいいんだ?と調べたら、au one Friends Note[au]というサービスがあって、Andoriodにもアプリが出てる[au]。
それで、このau one Friends Noteはau oneアドレス帳からインポートできる。
au one アドレス帳 → au one Friends Note → Galaxyと同期
で、移行できるじゃんか楽勝だねと思い、意気揚々とau one Friends Noteにインポート。完了したら、スマートフォンと同期ボタン押して、簡単なお仕事終了・・・とならなかった。
スマートフォンが同期する設定になっていません、とエラーメッセージ。
が、Galaxyのアプリを見ても、そんな設定変更するところが一切ない。
どういうこっちゃーと調べたら[ITmedia]
KDDIとJibe Mobileが、ソーシャルアドレス帳アプリ「au one Friends Note」の機能を1月26日15時から拡張する。<中略>対応機種はAndroid2.1以降のスマートフォンで、2012年春モデルと「AQUOS PHONE IS14SH」「ARROWS ES IS12F」は順次対応する。
春モデルまだ対応してねー。
というわけで、まだ同期できませんでした。
どうしようかなぁと考えたところ、au one friends Noteがエクスポート機能持ってて、Google contacts[google]がインポート機能持っているので、エクスポートしたものをGoogleが読み込める形にすればいいじゃんかと思って、カッとなって作った。
コード
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from __future__ import print_function
import sys,os
import csv
from optparse import OptionParser
def convertPhoneType(data):
return 'Mobile' if unicode(data, 'cp932').encode('utf8') == '携帯' else data
def convertMailType(data):
return 'Home' if unicode(data, 'cp932').encode('utf8') == '自宅' else data
def convertCSV(filename,outputFileName):
# 読み込みファイル
csvfile = open(filename)
auadress = csv.reader(csvfile)
next(auadress) # 1行目はタイトルなので飛ばす
# 出力ファイル
filename = outputFileName
writecsv = csv.writer(file(filename, 'w'), lineterminator='\n') # 書き込みファイルの設定
writecsv.writerow(['Name','Given Name','Additional Name','Family Name','Yomi Name','Given Name Yomi','Additional Name Yomi','Family Name Yomi','Name Prefix','Name Suffix','Initials','Nickname','Short Name','Maiden Name','Birthday','Gender','Location','Billing Information','Directory Server','Mileage','Occupation','Hobby','Sensitivity','Priority','Subject','Notes','Group Membership','E-mail 1 - Type','E-mail 1 - Value','E-mail 2 - Type','E-mail 2 - Value','Phone 1 - Type','Phone 1 - Value','Phone 2 - Type','Phone 2 - Value'])
for row in csv.reader(csvfile):
print(row[265])
writecsv.writerow([row[10],'','','',row[13],'','','','','','','','','','','','','','','','','','','','',row[20],row[0],convertMailType(row[268]),row[267],convertMailType(row[272]),row[271],convertPhoneType(row[266]),row[265],convertPhoneType(row[270]),row[269]]) # 1行(リスト)の書き込み
csvfile.close()
if __name__=='__main__':
parser = OptionParser(version="0.5")
parser.add_option("-o",
action="store",type="string",dest="filename",default=u'googleadress.csv',
help=u"The output file name is specified.",metavar="FILENAME")
(options, args) = parser.parse_args()
outputFileName = options.filename
#引数がおかしい場合
if len(sys.argv) < 2:
print(u'Usage: # python',sys.argv[0],u'[sourcedirectorypath] -o "outputFile.csv"')
quit()
sourcePath = os.path.dirname(unicode(sys.argv[1],"mbcs") + '\\')
if os.path.isfile(sourcePath) == False: #存在しないFileを指定した場合
print(u'The directory does not exist.',sourcePath)
quit()
else:
convertCSV(sourcePath,outputFileName)
使い方
- au one friends Noteからエクスポートする。export.csvとする
- エクスポートしたcsvを上記プログラムにD&D
- ファイル名を指定しなければ、googleadress.csvが出力されるので、googleコンタクトからインポートする。
グループ、名前、携帯番号1,2、Eメールアドレス1,2、メモは移行できる。後は使わなかったら分からん。