ホーム » コンピュータ » Network » iCalendarをGoogle Calendarに転送

システム

最近の投稿

  • この一週間の必需品
    6/22頃からの風邪の症状。鼻水と喉の痛みがあって、鼻スプレーと喉スプレーでだましだましの2週間。 […]
  • あづぃ…
    2F廊下温度35℃、WBGT30℃越え。 […]
  • gemini-cli 便利
    Gemini をコマンドラインから使えるツール gemini-cli が公開されている。 […]
  • LINE bot が動いていない… 月当たり最大数オーバー
    我が家では、以前より 自宅専用の LINE bot を動かしていて、サーバからの通知に使っていた。 […]
  • rkhunter の設定
    卒研のセキュリティの説明の中で rkhunter を紹介。説明してたら、自宅サーバにはサーバ機以降後に […]

アーカイブ

カテゴリー

iCalendarをGoogle Calendarに転送

Net::Google::Calendarモジュールが便利そうだったので、 iCalendar(.ics)のファイルを Google Calendar にアップロードするプログラムを、 Perl で書いてみた。 今までは、Java で書かれたGCalDaemonを使っていたけど、カスタマイズもしづらかった。

繰り返しイベントについては、未対応のまま。 本当は同期させたいけど、Google側のEventのIDはURL形式で、iCal と互換性がない。 だから、アップロードの度に、一旦全イベントをチマチマ消しているのが、美しくない。 かといって、iCal と Google Calendar の ID の対応表をいちいち更新するのも面倒だし。

get_eventsとdelete_entryの使い方

# Google Calendar の登録情報
$url = 'http://www.google.com/'
.'calendar/feeds/XXXX%40gmail.com/'
.'private-XXXXXXXXXXX/basic' ;
$user = 'XXXX@gmail.com';
$pass = 'PPPPPPPP';
$calname = Jcode->new( 'NNNN' )->utf8 ;
my $cal = Net::Google::Calendar->new( url => $url );
# $cal->{_ua}->env_proxy;               # (2)
$cal->login($user, $pass) or die $@;    # (3)
# 指定されたカレンダーを選ぶ
my $dest_cal ;
foreach my $c ( $cal->get_calendars ) {
$dest_cal = $c if ( $c->title eq '<カレンダーの名前>' ) ;
}
if ( $dest_cal ) {
# 登録されていたイベントを全部消す
$cal->set_calendar( $dest_cal ) ;
my $start_index = 1 ;
my $max_results = 20 ;
my @ev ;
while( 1 ) {
# 指定件数しかイベントを返さないので少しづつ消す
@ev = $cal->get_events(
start-index => $start_index ,
max-results => $max_results ) ;
last if ( @ev == 0 ) ;
foreach my $e ( @ev ) {
$cal->delete_entry( $e ) ;
}
$start_index += @ev ;
}
}

Google 検索

My Google   Yahoo

Microsoft

ファンサイト