« GetASFStream | トップページ | Windows 98、98 SE、Me のサポートが 2006年7月11日に終了 »

2006/04/13

Google Calendar

Google Calendarβがリリースされました。
iCal形式のインポートができると聞いて、早速LXでvCalを作ってutf-8にして試してみました。


rem LXのapptoutでのcsv形式から、GoogleCalendar形式へ
copy ¥_dat¥appt.adb
dayexec apptout -a -g/YYMMDD/ -x appt.adb >appt.csv
perl lx2gc.pl appt.csv >lx2googl.vcs
nkf -Sw lx2googl.vcs >lx2ggl.vcs

で、スクリプトはこんな感じ、

#!/usr/bin/perl
# LXのapptout出力csvからGoogleCalendar形式へ変換
# 2006/4/13 試作

# memoやlocationや件名を何文字で切るか
$maxlen = 100000;

$jst = 9;
@mdays = ('31', '31', '28', '31', '30', '31', '30',
'31', '31', '30', '31', '30', '31' ) ;

print 'BEGIN:VCALENDAR';
print "¥n";
print 'VERSION:1.0';
print "¥n";
while($line = <>){
@arr = split(/,/, $line);
$cntarr = @arr;
if ($cntarr < 8){
print 'BEGIN:VEVENT';
print "¥n";
@datearr = split("/", substr($arr[1],1,10));
$year = $datearr[0];
$mon = $datearr[1];
$date = $datearr[2];
if ($arr[2] eq 'NONE') {
$hour = 0;
$min = 0;
} else {
@timearr = split(/:/, substr($arr[2],1,5));
$hour = $timearr[0];
$min = $timearr[1];
}
$hour = $hour - $jst;
if ($hour < 0) {
$hour = $hour + 24;
$startdateflag = 'CHANGE';
$date--;
if ($date < 1) {
$mon = $mon - 1;
$date = $mdays[$mon];
$date++ if (($mon == 2) &&
((($year % 4) == 0) &&
( ($year % 100) || (($year % 400)==0) )));
if($mon < 1){
$mon = 12;
$year--;
}
}
}
print 'DTSTART:';
print sprintf("%04d%02d%02dT%02d%02d00Z",$year,$mon,$date,$hour,$min);
print "¥n";
if ($arr[3] eq 'NONE') {
$hour = 0;
$min = 0;
} else {
@timearr = split(/:/, substr($arr[3],1,5));
$hour = $timearr[0];
$min = $timearr[1];
}
$hour = $hour - $jst;
if ($hour < 0) {
$hour = $hour + 24;
} else {
if ($startdateflag eq 'CHANGE'){
@datearr = split("/", substr($arr[1],1,10));
$year = $datearr[0];
$mon = $datearr[1];
$date = $datearr[2];
}
}
print 'DTEND:';
print sprintf("%04d%02d%02d¥T%02d%02d00¥Z",$year,$mon,$date,$hour,$min);
print "¥n";
print 'SUMMARY:';
$summary = substr($arr[0],1,length($arr[0])-2);
$summary = substr($summary,0,$maxlen) if(length($summary) > $maxlen);
print $summary;
print "¥n";
print 'CATEGORIES:MISCELLANEOUS';
print "¥n";
$location = substr($arr[4],1,length($arr[4])-2);
if ($location ne ''){
print 'LOCATION:';
$location = substr($location,0,$maxlen) if(length($location) > $maxlen);
print $location;
print "¥n";
}
print 'CLASS:PUBLIC';
print "¥n";
($sec,$min,$hour,$day,$mon,$year,$wday,$yday,$isdst) = gmtime(time);
$year = $year + 1900;
$mon = $mon + 1;
print 'LAST-MODIFIED:';
print sprintf("%04d%02d%02dT%02d%02d%02dZ",$year,$mon,$day,$hour,$min,$sec);
print "¥n";
$memo = substr($arr[6],1,length($arr[6])-3);
if ($memo ne ''){
print 'DESCRIPTION:';
$memo = substr($memo,0,$maxlen) if(length($memo) > $maxlen);
print $memo;
print "¥n";
}
print 'END:VEVENT';
print "¥n";
}
}
print 'END:VCALENDAR';
print "¥n";

で、Importしてみました。
日本語部分が文字化けというか、点々になってしまいました。
MacのiCalにLXで作ったファイルを読ませてみると、予定を読み込んで登録できます。
あれ。MacのiCalでファイルに書きだして、Google Calendarでインポートすると、
…やっぱり日本語部分は???になってしまいましたとさ。

怪我の功名でLXからMacのiCalに予定を移行するスクリプトを書いてしまった夜でした。

|

« GetASFStream | トップページ | Windows 98、98 SE、Me のサポートが 2006年7月11日に終了 »

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/69188/9579423

この記事へのトラックバック一覧です: Google Calendar:

« GetASFStream | トップページ | Windows 98、98 SE、Me のサポートが 2006年7月11日に終了 »