読者です 読者をやめる 読者になる 読者になる

神聖あーるPG - 社会人のデジタル生活

日曜プログラマになろうかなーと思った30代理系社会人の、キャリアアップや趣味(特にデジタル情報)の記録。らーめんとビールが好き。

AH-K3001Vのアドレス帳をWX320Tに移す

Ruby

ヨドバシのに〜ちゃんは「付属のソフトで移せます」って言ってたのに全然移せない!
AH-K3001V側の京セラユーティリティはkkcって独自バイナリじゃないとエクスポートできない!
WX320TvcardOutlookかOutlookExpressでないとインポートできない!
なんつー不便さ。
でもH"問屋を使えばCSVで一括エクスポートできるので、そこからは自力で何とかするしかない。

#!/usr/bin/ruby
$KCODE = "SJIS"	# for S-JIS

# AH-K3001VtoWX320T.rb
# 	AH-K3001Vのアドレス帳(のH"問屋でエクスポートしたもの)を、
# 	WX320Tでインポートできるように変換する
# 
# Usage
# $> AH-K3001VtoWX320T.rb < in.csv > out.vcf
# 
# <フォーマット>
# BEGIN:VCARD
# VERSION:2.1
# N:名前だよ;;;;
# SOUND;X-IRMC-N:ナマエダヨ;;;;
# NOTE;CHARSET:メモです
# TZ:+0000
# X-CLASS:PUBLIC
# X-GN;CHARSET:Group 01
# X-GNO:1
# LOGO:
# PHOTO:
# X-CVA-MEMORYNO:1
# EMAIL;HOME:mail@docomo.ne.jp
# EMAIL;HOME:mail2@ezweb.ne.jp
# EMAIL;HOME:mail3@softbank.ne.jp
# TEL;CELL:0312345678
# TEL;HOME:09025803698
# TEL;HOME:0452145698
# END:VCARD
# 
# <appendix>
# WX320Tでの種別
# TEL : HOME, CELL, X-NEC-PHS, WORK, FAX
# EMAIL : HOME
# 
# AH-K3001Vでの種別
# TEL : FAX, PHS, 携帯 (それらの場合、""で囲まれる。そうでないなら囲まれない)




$NAME = "名前だよ"
$NAME_KANA = "カナダヨ"
$GROUP = 0 #00〜09
$NO = -1	# 通し番号.
$EMAIL1 = "HOME:mail@docomo.ne.jp"
$EMAIL2 = "HOME:mail2@ezweb.ne.jp"
$EMAIL3 = "HOME:mail3@softbank.ne.jp"
$TEL1 = "CELL:0112345678"
$TEL2 = "CELL:0212345678"
$TEL3 = "CELL:0312345678"


ARGF.each{|line|
	
	# perse
	a = line.split(",")
	
	# check
	if (a.size != 17) then
		printf("irregular format. size :")
		p a.size
		next
	end
	if ((line.index"グループ,種別,") != nil) then next end
	
	# initialize.
	$NAME = nil
	$NAME_KANA = nil
	$GROUP = 1
	$NO += 1	# 位置に注意.
	$EMAIL1 = nil
	$EMAIL2 = nil
	$EMAIL3 = nil
	$TEL1 = nil
	$TEL2 = nil
	$TEL3 = nil

	# input
	$NAME		= a[2]
	$NAME_KANA	= a[3]
	if (a[0].scan(/[0-9]+/)[0] != nil) then
		$GROUP		= a[0].scan(/[0-9]+/)[0].to_i
	else
		$GROUP = 0
	end

	if ($GROUP > 9 || $GROUP < 0) then $GROUP = 0 end
	$EMAIL1		= a[10][/[\x23-\x7F]+@(([-a-zA-Z0-9]+\.)*[a-zA-Z]+|\[\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\])/, 0]
	$EMAIL2		= a[11][/[\x23-\x7F]+@(([-a-zA-Z0-9]+\.)*[a-zA-Z]+|\[\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\])/, 0]
	$EMAIL3		= a[12][/[\x23-\x7F]+@(([-a-zA-Z0-9]+\.)*[a-zA-Z]+|\[\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\])/, 0]
	$TEL1		= a[4][/[0-9]+/, 0]
	$TEL2		= a[5][/[0-9]+/, 0]
	$TEL3		= a[6][/[0-9]+/, 0]
	
	$NAME.gsub!(/"/, "")

	if ($EMAIL1 != nil) then
		$EMAIL1.gsub!(/"/, "")
		$EMAIL1 = "HOME:" + $EMAIL1
	end
	if ($EMAIL2 != nil) then
		$EMAIL2.gsub!(/"/, "")
		$EMAIL2 = "HOME:" + $EMAIL2
	end
	if ($EMAIL3 != nil) then
		$EMAIL3.gsub!(/"/, "")
		$EMAIL3 = "HOME:" + $EMAIL3
	end
	if ($TEL1 != nil) then
		$TEL1.gsub!(/"/, "")
		$TEL1 = "HOME:" + $TEL1
	end
	if ($TEL2 != nil) then
		$TEL2.gsub!(/"/, "")
		$TEL2 = "HOME:" + $TEL2
	end
	if ($TEL3 != nil) then
		$TEL3.gsub!(/"/, "")
		$TEL3 = "HOME:" + $TEL3
	end

	# output
	printf("BEGIN:VCARD\n")
	printf("VERSION:2.1\n")
	printf("N:%s;;;;\n", $NAME)
	printf("SOUND;X-IRMC-N:%s;;;;\n", $NAME_KANA)
	printf("TZ:+0000\n")
	printf("X-CLASS:PUBLIC\n")
	printf("X-GN;CHARSET:Group %02d\n", $GROUP)
	printf("X-GNO:%d\n", $GROUP)
	printf("LOGO:\n")
	printf("PHOTO:\n")
	printf("X-CVA-MEMORYNO:%d\n", $NO)
	printf("EMAIL;%s\n", $EMAIL1) if $EMAIL1
	printf("EMAIL;%s\n", $EMAIL2) if $EMAIL2
	printf("EMAIL;%s\n", $EMAIL3) if $EMAIL3
	printf("TEL;%s\n", $TEL1) if $TEL1
	printf("TEL;%s\n", $TEL2) if $TEL2
	printf("TEL;%s\n", $TEL3) if $TEL3
	printf("END:VCARD\n\n")
}
広告を非表示にする