スポンサーサイト
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
【--/--/-- --:--】 | スポンサー広告 | page top↑
Googleカレンダーを分割する
 私はスケジュールをMacの iCal と Googleカレンダーを併用して管理していて、iCal は年度ごとに別カレンダーに分けていたが、Googleカレンダーは1つのカレンダーをずっと使い続けていた。iPhone や iPad は iCal のカレンダーと me.com のカレンダーで同期し、更に iPhoneアプリで Googleカレンダーと同期するアプリも併用している。(面倒くさいけど)
 先日、何かの拍子に iCal のデータが me.com も一緒に消えてしまって困ったときに、Googleカレンダーのデータをエクスポートして、iCal に取り込んで事無きを得たのだが、このとき Googleカレンダーは使い始めた 2008年からのイベントがゴッソリ iCal に入って重くなってしまった。
 そこで、Google からエクスポートした iCalendar 形式のファイルから、必要な分だけ取り出す必要に迫られググッて見たけど良いプログラムが無かったので、Perl でプログラムを書いた。
 基準日より前を取り出したものと、基準日より後を取り出したものを、それぞれ、別のカレンダーとしてインポートすれば Google カレンダーを分割することができます。またこのファイルは iCal に読み込むこともできるので、何かのタイミングで消えても安心です。
 自分用に作りましたが、必要な人も居るかもしれないので、公開しておきます。(ソースを公開しますので、もっと良い記述が有ったらコメントにでもお願いします。)
■iCalDataSelect_New.pl (iCalendar形式のファイルから基準日より新しいイベントを取り出す)

#!/usr/bin/perl
# iCalデータから基準日より前のデータを削除する。(基準日以降のデータを取り出す)
use encoding 'utf8', STDOUT=>'utf8';
$fromDate = "20100401"; # <---- 基準日をセット (YYYYMMDD)
$EventFlag = '';
$EventDate = '';
while(<>) {
$EventFlag = $_ if(/BEGIN:VEVENT/);
$EventDate = $1 if(/DTSTART;.+:([0-9]+)/);
$EventDate = $1 if(/DTSTART:([0-9]+)/);
if ($EventDate ge $fromDate) {
print "$EventFlag";
$EventFlag = '';
$EventDate = '00000000';
}
print if ($EventFlag eq '');
$EventFlag = $_ if(/END:VEVENT/);
print if(/END:VCALENDAR/);
}


 使い方は、このスクリプト(実行権限を与えて)があるディレクトリでターミナルから以下のコマンドを入力
./iCalDataSelect_New.pl < (エクスポートしたファイル名) > (出力したファイル名)
【実例】

$ chmod +x iCalDataSelect_New.pl
$ ./iCalDataSelect_New.pl < exportFile.ics > selectedData.ics



 逆に、基準日より古いデータを取り出したいときは、

(1) if ($EventDate ge $fromDate) を if ($EventDate le $fromDate) に変更
(2) $EventDate = '00000000'; を $EventDate = '99999999'; に変更


したものを使えばOKです。
スポンサーサイト
【2010/09/25 11:29】 | Mac好き | トラックバック(0) | コメント(0) | page top↑
<<私の iPhone アプリが本で紹介された | ホーム | いわてジャズ2010良かった~>>
コメント
コメントの投稿














管理者にだけ表示を許可する

トラックバック
トラックバックURL
→http://ynomura.blog47.fc2.com/tb.php/697-9b50c528
この記事にトラックバックする(FC2ブログユーザー)
| ホーム |
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。