仕事が一段落したので、部屋やPCなどの整理をしていました。GmailやGoogle Calendarもいらないものは削除。と思いきや、Google Calendarは予定を全部削除することはできても一部(例えば1年前より過去の予定とか)をまとめて削除する機能がありません。なぜでしょうね。。。?そんなにサーバーに個人情報を残しておきたいのでしょうか?それとも誤って消してしまうユーザが多いからでしょうか?
とりあえず作ってみました。ただRubyを実行できる環境がない人は面倒でしょうね?Webサービス化してもいいですが。。。サーバーがひ弱なのと面倒なのでこのまま公開します。使いたい人がもしいれば使ってみてください。ただ。。。私のicsファイルは変換できたのですが皆さんの予定が全てこれで賄えるかはわかりません。中途半端でごめんなさいねー。
require 'time' d1 = Time.parse(ARGV[1].slice(0..7)) status = :TOP out = '' outflag = false open(ARGV[0]) do |file| while line = file.gets k = line.split(':') case status when :TOP if k[0] == 'BEGIN' and k[1].chop == 'VEVENT' status = :BEGIN out = line else print line end when :BEGIN out += line if k[0] == 'END' and k[1].chop == 'VEVENT' status = :END else if k[0] == 'DTSTART' or k[0].split(';')[0] == 'DTSTART' outflag = (Time.parse(k[1].slice(0..7)) >= d1) end end when :END print out if outflag == true if k[0] == 'BEGIN' and k[1].chop == 'VEVENT' status = :BEGIN out = line outflag = false end end end end print 'END:VCALENDAR'
■使い方
- Googleカレンダーを開き、カレンダーのエクスポートを選択します。(この辺の操作はいろいろな方がいたるところで書いています)
- エクスポートしたファイルはzipファイルなので展開すると○○○○.icsというファイルになるはずです。
- あとは以下のように実行するだけです。以下の例は2009年1月1日以降の予定は残し、それ以前は削除します。最終的には(以下の例では)rrr.icsというファイルが新しいカレンダーファイルになります。異常処理などは全くしていないので、できれば変換後のicsファイルを自分で確認していただければと思います。
ruby r.rb ○○○○.ics 20090101 > rrr.ics
- 最後に、Googleカレンダーを開き、一旦、全ての予定を削除します。この方法もネットにたくさん書かれています。親切にもyoutubeに動画を公開してくれている人までいます。そちらを参考にしてください。削除したあと、変換後のカレンダーファイル(上記の例ではrrr.ics)をインポートすればオーケーです。ちなみにインポートは少し時間がかかります。処理終了まで気長に待ってみてください。
でわでわ!