Aug 28, 2008

サイボウズオフィス7の SyncCalendarと ApiCalendar

職場のサイボウズオフィスがとうとうバージョン7にアップデートされた結果、自作のcybozu2icalが使えなくなってしまった。

どうして使えなくなるのかと言うと、サイボウズオフィス6にはSyncCalendarとApiCalendarという二つのAPIが用意されているのに対して、7にはApiCalendarの方しかないが、cybozu2icalは効率上の理由からSyncCalendarを使って実装してあるからだ。

ということで、cybozu2icalのApiCalendar対応に向けてちょっと2つのAPIを調べてみた。

まず、SyncCalendarの使用例はこんな感じ。

#!/usr/bin/perl
use strict;
use warnings;
use constant {
    URL    => 'https://your.domain.name/cgi-bin/ag.cgi',
    USER   => 'username',
    PASSWD => 'password',
};
 
my $auth_param = {
    _System  => 'login',
    _Login   => 1,
    _Account => USER,
    Password => PASSWD,
};
 
use LWP::UserAgent;
my $ua = LWP::UserAgent->new;
 
my $res = $ua->post( URL . '?page=SyncCalendar', $auth_param );
print $res->content;

(この例では与えていないが)sm, emというパラメータを与えることで最長一年前から一年後までのスケジュールを取得できるようだ。職場の環境がアップデートしてしまったので確認できないのだけど。

一方、ApiCalendarの方はこんな感じ。

#!/usr/bin/perl
use strict;
use warnings;
use constant {
    URL    => 'https://your.domain.name/cgi-bin/ag.cgi',
    USER   => 'username',
    PASSWD => 'password',
};
 
my $auth_param = {
    _System  => 'login',
    _Login   => 1,
    _Account => USER,
    Password => PASSWD,
};
 
use LWP::UserAgent;
my $ua = LWP::UserAgent->new;
 
my $res = $ua->post(
    URL . '?page=ApiCalendar',
    {
        %$auth_param,
        SetDate => 'da.2008.8.1',
        EndDate => 'da.2008.9.1',
    }
);
print $res->content;
 
for ( split( /\r?\n/, $res->content ) ) {
    next unless $_ =~ /^ts\.\d+,(\d+),(da\..+)$/;
    my $res = $ua->post(
        URL . '?page=ApiCalendar',
        {
            %$auth_param,
            EID  => $1,
            Date => $2,
        }
    );
    print $res->content;
}

要は、ApiCalendarでは(SyncCalendarとは異なり)2フェーズでカレンダー情報を取得することになる。最初のリクエストで取得したい範囲の日付を指定してEIDとDateのペアのリストを得た後、個々のEID・Dateペアに関して再度リクエストすることで詳細なカレンダー情報を得る。

ApiCalendarには問題が2つあって、1つはアホみたいに時間がかかること。(件数+1)回呼び出さなきゃならんからね。もう1つは分かりにくい問題なのだが、実はApiCalendarではバナー予定が取得できないこと。こっちの問題は洒落にならんね。

そういうわけで、cybozu2icalをサイボウズオフィス7用にポートするならこの2つの問題には目をつぶってもらうしかない。さてどうしよう。

About Me

My Photo

つくばで働く研究者

Total Pageviews

Amazon

Copyright 2012 Ogawa::Buzz | Powered by Blogger
Design by Web2feel | Blogger Template by NewBloggerThemes.com