Ext JS に関しては,新しい記事は Sunvisor Lab. ExtJS 別館 にあります。そちらもよろしくお願いいたします。
職場のサイボウズの予定をiPodで持ち歩く
職場のサイボウズOfficeのスケジュールをiPod touchにシンクさせて使いたいと思いまして,いろいろとやった結果を記録しておきます。iPod touchにスケジュールを同期させるために間にGoogleカレンダーを挟みます。
Step One: サイボウズとGoogleの連携
サイボウズofffice8と同期するツール暫定版|名古屋ではたらく社長blogだもんで
これはすばらしい。このスクリプトを自分のサイトにセットして,Googleカレンダーで「他のカレンダー」として追加してやります。やり方は次の通り。
- 上記サイトからスクリプトをダウンロードします。
- ソースの設定の部分を自分のところの環境に合わせてCYBOZU_URL, LOGIN_ID, LOGIN_PASSを変更します。CYBOZU_URLは,最後の?を入れないようにしましょう(僕は入れてハマりました)。また,僕の場合はスケジュールタイトルを,固定でcybozuにしたかったので,SCHEDULE_TITLEに決めうちでcybozuを指定しました。
- 繰り返し予定が初回分だけしか入らなかったので,リスト2の変更をしました。
- そしてこのフォルダをあなたのサイトにアップロードします。可能であれば,.htaccessでアクセス制限をかけます。
- Googleのカレンダーの「他のカレンダー」の右下にある「追加」をクリックします。
- 「URLで追加」を選びます。
- URL欄に,「http://<ファイルを設置したURL>/data.ics」 と入力して「カレンダーを追加」をクリックします。
リスト1(8行目から)
//---------------------------------------------------------------------------------------------------------------- // 設定 //---------------------------------------------------------------------------------------------------------------- define('CYBOZU_URL', 'http://xxxxxxxxxxxx/cgi-bin/cbag/ag.cgi'); //サイボウズのURL
define("LOGIN_ID", ''); //ログインID
define("LOGIN_PASS", ''); //ログインパス
define("CHAR_CODE", 'SJIS'); //サイボウズの文字コード
define("UID", $uid); //取得したいスケジュールのID(無い場合はログイ
define("SCHEDULE_TITLE", $sstitle); //スケジュールタイトル
define("SCHEDULE_MEMO", TRUE); //スケジュールメモまで取得する場合は'TRUE'
リスト2(161行目から)
$schedule_list[] = Array('id' => $schedule_id.$schedule_from, 'description' => $schedule_description, 'dtstart' => $schedule_from, 'dtend' => $schedule_to, 'summary' => $schedule_summary);
以上でサイボウズの予定がGoogleカレンダーに表示されるようになります。
このままでは,10時以前の予定の表示が狂うことが判明。元ネタページのコメントにあるように,時間出力を2桁にする修正をしなければならない模様。それらについての変更を追加。
追加の修正
リスト3(149行目)10時以前の予定のゼロ詰めと終了時刻がない場合の処理
$to_sp = split(':', @$time_sp[1]);の部分を次のように変更 if ( count($time_sp) > 1 ) {
$to_sp = split(':', @$time_sp[1]);
} else {
$to_sp = $from_sp;
}
$from_sp[0] = sprintf('%02d', @$from_sp[0]);
$to_sp[0] = sprintf('%02d', @$to_sp[0]);
リスト4(151行目)これはリスト5とともに終日予定のオプションを挿入するため。
$schedule_from = ':' . $schedule_date . 'T' . @$from_sp[0] . @$from_sp[1]. '00';
$schedule_to = ':' . $schedule_date . 'T' . @$to_sp[0] . @$to_sp[1]. '00';
リスト5(157行目)
$schedule_from = ';VALUE=DATE:' . $schedule_date;
$schedule_to = ';VALUE=DATE:' . $schedule_date_tommorow;
リスト(190行目)これをしないとGoogleカレンダーがなぜかDTENDをちゃんと読み込んでくれなかった。
echo 'DTSTART;TZID=Asia/Tokyo' . $vale['dtstart'] . "\n";
echo 'DTEND;TZID=Asia/Tokyo' . $vale['dtend'] . "\n";
iPodのカレンダーとGoogleカレンダーの同期
そこまでできたら,次にiPodのカレンダーと同期しようと,
これらのサイトの情報を元に,iPod標準のカレンダーにサイボウズの予定をセットしてみました。Google Syncとかいう機能を使っての設定です。でもiPodの標準のカレンダーってしょぼい。月表示画面で予定を直接見られない。
Refillsでの設定
そんな不満を解消するためにRefillsというアプリを購入しました。1,200円とiPhoneアプリにしては高めの価格ですが,なかなかいいです。標準のカレンダーよりもずっときれいで使いやすい。
それにGoogleカレンダーを同期するのも簡単です。
- 設定 > Refills を選びます。
- GoogleカレンダーのユーザーIDとパスワードをセットします。
これだけで,RefillsのカレンダーにGoogleのカレンダーが表示されます。
ですが,このままだとGoogleカレンダーの日本の祝日が表示されてしまいます。Refillsには標準で日本の祝日が入っていますから,邪魔なので消すことにします。Refillsでは,Googleカレンダーのうちで表示するカレンダーを選択することができます。
- Refills画面からその他 > カレンダー と進みます。
- 表示するカレンダーを選択する画面がでますので,不要なカレンダーのチェックを外します。
以上で完了です。Refillsでは登録した予定がそのままGoogleカレンダーにも登録されます。Refillsから直接サイボウズの予定を登録することはさすがにできませんが,プライベートの予定はRefillsから直接登録することができます。iPod touchから会社の予定を入れるときには,Safariでサイボウズにログインして登録します。
追記
この記事を書くに当たって,iPod touchのスクリーンショットをとりました。ホームボタンを押しながらスリープボタンを押すと撮れます。そしてiPod touchにインストールしたDropBoxを起動して,[+]をクリック。「Existing Photo or Video」をクリックすると写真フォルダからデータをDropBoxに保存できます。そしたら,PCでDropBoxを開くだけでスクリーンショットを取り出せます。便利ぃ!