人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

解決できた方に1,000ポイント進呈します。
サーバ上のサイボウズoffice6をgoogleカレンダーに同期させるために、Cybozu2icalを使いたいのですが、うまくいきません。
※他の回答者もいた場合、ベストアンサーの方を最高ポイントとして按分します。

Cybozu2icalの希望する使用法
3名分のスケジュールをそれぞれのgoogleカレンダーに同期させたい。

環境は以下のとおり
サーバ:さくらVPS
OS:CentOS 6.3
起動しないスクリプト:Cybozu2ICal
http://code.google.com/p/ogawa/wiki/Cybozu2ICal

モジュール:cpanにより以下インストール。
※cpanでのインストールが失敗したと判断してcpanmによるインストールも行っております。
モジュールの状態は追記で説明
Text::CSV 1.0+
DateTime
LWP
Class::Accessor::Fast
Data::ICal
YAML


この状態で ./cybozu2ical>cybozu.ics を実行すると、以下のエラーが出ます。
Can't use an undefined value as a HASH reference at ./cybozu2ical line 154.
※エラーの状況は追記します。

この問題を解決できる方、よろしくお願いします。

●質問者: news1
●カテゴリ:ウェブ制作
○ 状態 :終了
└ 回答数 : 6/6件

▽最新の回答へ

質問者から

なお Gcal Connection for Cybozu Office は既に試用しており、大変優良なソフトであることは承知しております。但し当方の条件だと19,800円が必要で、稟議では却下されてしまいました。


1 ● oil999
●25ポイント

Cyrus SASL がインストールされていないのではないでしょうか。
下記を参照してください。
http://arinux.net/?eid=4


news1さんのコメント
以下のとおり関係モジュールをインストールしたのですが、同じエラーが出ます。 [root@www1××××]# rpm -qa | grep cyrus-sasl cyrus-sasl-plain-2.1.23-13.el6.x86_64 cyrus-sasl-md5-2.1.23-13.el6.x86_64 cyrus-sasl-2.1.23-13.el6.x86_64 cyrus-sasl-devel-2.1.23-13.el6.x86_64 cyrus-sasl-lib-2.1.23-13.el6.x86_64

2 ● sasasasaisai
●25ポイント

154 my %rrule = %{ $item->rrule }; で↓のエラーということは、
itemのrruleプロパティが定義されていないということになります。

Can't use an undefined value as a HASH reference at ./cybozu2ical line 154.

少しソースを見たのですが、rruleが何の設定かわかりませんね、
reference ruleのことのようですが。。


提示されていた、↓のURLに
http://code.google.com/p/ogawa/wiki/Cybozu2ICal

「--compat-google-calendarオプションの追加。Google Calendarのバグに対応するためにRRULE内でWKST=SUプロパティを指定する必要があるが、この指定はMacOS X iCalendarと互換性がない。デフォルトではWKST=SUプロパティは出力せず、--compat-google-calendarオプションを指定した場合のみ出力するようにした。」

と記載がありましたので、ためしに--compat-google-calendarオプションで実行してみてはいかがでしょうか?


sasasasaisaiさんのコメント
↓のページの方は、「cybozu2ical --conf ファイルパス/config.yaml --compat-google-calendar > ファイルパス/ical.ics」 で実行してうまくいっているようです。 http://dameninngenn.sblo.jp/article/35403660.html

news1さんのコメント
次のようなエラーが出ます。 コマンドの記述が間違ってますでしょうか? [root@www××× cybozu2ical-0.36]# cybozu2ical --conf /var/www/html/cybozu2ical-0.36/config.yaml --compat-google-calendar > /var/www/html/cybozu2ical-0.36/ical.ics bash: cybozu2ical: コマンドが見つかりません

news1さんのコメント
パスが通ってなかったようです。 以下のように書き換えて実行しました。 [root@www×××× cybozu2ical-0.36]# /var/www/html/cybozu2ical-0.36/cybozu2ical --conf /var/www/html/cybozu2ical-0.36/config.yaml --compat-google-calendar > /var/www/html/cybozu2ical-0.36/ical.ics しかし以下のようなエラーが出てしまいます。 Can't use an undefined value as a HASH reference at /var/www/html/cybozu2ical-0.36/cybozu2ical line 154.

3 ● a-kuma3
●950ポイント ベストアンサー

rrule メンバが HASH になっていない、というエラーが出てます(No.2 の方が言われる通り)。
Cyboze2Ical のソース を見てみましたが、このデータを作っているのは cybozu2ical スクリプトではないので、ここを攻めても解決しないと思います。


んで、開発者ご本人のブログから。

大きな変更点は二つあって、ひとつはサイボウズオフィス6からカレンダーデータを取得・パーズする処理を分離して、WWW::CybozuOffice6::Calendarモジュールを作ったということです。

http://blog.as-is.net/2006/11/cybozu2ical-010.html

念のため、確認しますが、WWW::CybozuOffice6::Calendar って、導入してますよね?
zip をそのまま展開してあれば大丈夫ですが、質問でさらされているのが、Google code のスクリプト本体だけなのが、非常に気になってます。
http://code.google.com/p/ogawa/wiki/Cybozu2ICal
↑の cybozu2ical-0.36.zip を使ってますか?

単体はこちら(ブログにも書いてありますけど)。
ogawa - Revision 618: /trunk/WWW-CybozuOffice6-Calendar



導入済みであるとして、開発者当人もブログに書かれていますが、RRULE の解釈に問題があるのだと思います。

iCalendarのRRULEは常人の理解を超えているのでずっと敬遠してきました(RRULE, RDATEをフルサポートするカレンダーソフトウェアってまじすごいよ)。が、冷静にサイボウズが対応している反復イベントのパターンを観察してみていたら、割と単純なRRULEだけで済むことが分かってきたので、対応してみました。おざなりなものですが。

テストが十分ではないのでおそらく不具合(特にRRULE)が結構あると思います。人柱希望の方はどうかお試しください。

http://blog.as-is.net/2006/11/cybozu2ical-010.html

ここを踏み込んでいくには、問題がある RRULE のデータをさらさないと、誰にも解決できないと思います(開発者当人も)。
単純なカレンダーを用意できないでしょうか?
反復イベントが無ければ、正しく動作するような気がします。
もし、その確認ができたら、反復イベントをひとつ作って、また動作確認です。
もし、正しく動くようであれば、実際に連携したいイベントと何か差があるはずなんです。

以下は、WWW::CybozuOffice6::Calendar の関連がありそうなソースです。

rrule メンバが有効になるのは、RecurrentEvent (反復カレンダーイベント) だけのようですし、何がしかのデータが設定されてます。
rrule メンバが HASH じゃないとは、ちょっと考えにくいですけどねえ...
cybozu2ical-0.36.zip に同梱されている RecurrentEvent.pm が、先の URL で参照できるソースとちょっと違ってました。

our %FREQUENCY = (
 'y' => 'YEARLY',
 'm' => 'MONTHLY',
 'w' => 'WEEKLY',
 'd' => 'DAILY',

 # weekdays
 'n' => 'WEEKLY',

 # fixed weekday, monthly
 1 => 'MONTHLY',
 2 => 'MONTHLY',
 3 => 'MONTHLY',
 4 => 'MONTHLY',
 5 => 'MONTHLY',
);
our @WEEK_STRING = ( 'SU', 'MO', 'TU', 'WE', 'TH', 'FR', 'SA' );

sub parse {
 my ( $this, %param ) = @_;
 $this->SUPER::parse(%param);

 # rrule
 my ( $type, $day ) = ( $param{type}, $param{day} );
 if ( defined $type && defined $day && exists $FREQUENCY{$type} ) {# ※ココ!
 my %rrule = ( FREQ => $FREQUENCY{$type} );
...
 $this->rrule( \%rrule );

該当しそうなところを切り出すと、こんな感じになってて、ソースで持っている FREQUENCY のどれかにマッチすること、という条件があります。
これを満たしていないデータがあると、rrule メンバが空っぽのままになっていそうです。

# これが原因くさいので、コメントの内容を転記しました


news1さんのコメント
>>WWW::CybozuOffice6::Calendar って、導入してますよね? こちらの意味が良く理解できないのですが、cybozu2ical-0.36はサーバ上でunzip解凍して、以下のディレクトリに置いてます。 [root@www×××× cybozu2ical-0.36]# pwd /var/www/html/cybozu2ical-0.36 cybozu2ical-0.36のディレクトリ内は次のような状態です。 [root@www×××× cybozu2ical-0.36]# ls -a . .. META.yml README config.yaml cybozu.ics cybozu2ical ical.ics lib >>ここを踏み込んでいくには、問題がある RRULE のデータをさらさないと、誰にも解決できないと思います(開発者当人も)。単純なカレンダーを用意できないでしょうか? サイボウズのカレンダーデータが必要との意味でしょうか? それともcybozu2icalを起動した際に生まれる何かのデータでことでしょうか?

news1さんのコメント
>>ここを踏み込んでいくには、問題がある RRULE のデータをさらさないと、誰にも解決できないと思います(開発者当人も)。単純なカレンダーを用意できないでしょうか? アクセスできるサイボウズoffice6のダミーカレンダーが必要だという意味ですね。 現サーバ上のoffice6は現在も稼働中ですので、止めることができません。 さくらVPSの試用サーバを準備したいのですが、準備に時間がかかりそうです。 対応が取れたところで、こちらにコメントしますね。

a-kuma3さんのコメント
>> アクセスできるサイボウズoffice6のダミーカレンダーが必要だという意味ですね。 << そうです。 実際にエラーになってるデータが分かれば、具体的な対処方法が思いつくんじゃないか、と。 「繰り返しに対応した」って履歴にはありましたから、解釈できない繰り返しのデータがあるんだと思うんです。 SVN で見られる trunk のソースと、0.36 の zip に入ってるソース、違いますね。 zip に入ってる方だと、なおさら rrule プロパティは設定されてると思うんだけどな... あらためて zip に同梱されている RecurrentEvent.pm を読んでみると... >|perl| our %FREQUENCY = ( 'y' => 'YEARLY', 'm' => 'MONTHLY', 'w' => 'WEEKLY', 'd' => 'DAILY', # weekdays 'n' => 'WEEKLY', # fixed weekday, monthly 1 => 'MONTHLY', 2 => 'MONTHLY', 3 => 'MONTHLY', 4 => 'MONTHLY', 5 => 'MONTHLY', ); our @WEEK_STRING = ( 'SU', 'MO', 'TU', 'WE', 'TH', 'FR', 'SA' ); sub parse { my ( $this, %param ) = @_; $this->SUPER::parse(%param); # rrule my ( $type, $day ) = ( $param{type}, $param{day} ); if ( defined $type && defined $day && exists $FREQUENCY{$type} ) {# ※ココ! my %rrule = ( FREQ => $FREQUENCY{$type} ); ... $this->rrule( \%rrule ); ||< 該当しそうなところを切り出すと、こんな感じになってて、ソースで持っている FREQUENCY のどれかにマッチすること、という条件があります。 きちんと抽出できない場合があるのは、ここが原因かもしれませんね。 # 実は、perl 苦手なんですよね...

news1さんのコメント
了解しました。 テスト環境を準備でき次第こちらにコメントします。 あと、WWW::CybozuOffice6::Calendar導入の件ですが、これはcybozu2ical-0.36をUNZIPしてディレクトリに置くだけで大丈夫でしょうか?

a-kuma3さんのコメント
WWW::CybozuOffice6::Calendar導入については、大丈夫だと思います。 実は、自宅のLAN環境が昨日から使えなくなってて、週末に返事できるかどうか、分からないんですが、ウォッチはするつもりです。 Perl が得意な人、いっぱいいるはずなんで、原因となるデータとソースがあれば、ちゃちゃっとやってくれる人が、出てくるかもしれないし。

news1さんのコメント
お待たせしました。 以下内容でテスト環境を構築しました。 http://133.242.133.48/cgi-bin/cbag/ag.cgi? ログイン名 テスト001 パスワード 123456 早速テストしてみたのですが、今度は違うエラーがでるようになりました。 以下エラーです。 [root@www3274ui cybozu2ical-0.36]# ./cybozu2ical > cybozu.ics Can't locate DateTime.pm in @INC (@INC contains: lib /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 .) at ./cybozu2ical line 14. BEGIN failed--compilation aborted at ./cybozu2ical line 14. これでは問題の切り分けが、難しくなりますね。 どうかよろしくお願いします。

TransFreeBSDさんのコメント
>> Can't locate DateTime.pm in @INC〜 << というのはDateTimeモジュールが見つからないというエラーです。確認してみてください。 また「--output-csv /path/to/output.csv」というオプションで、使用したデータをCSV形式で保存してくれます(保存箇所はエラーの前の様です)。 その後「--input-csv /path/to/input.csv」オプションで保存したファイルを元に動作してくれます。 ソースを追った限り、CSVで保存された5カラム目が $type になり、通常 %FREQUENCY のキーになっている[ymwdn12345]のいずれか1文字のはずです。 エラーがa-kuma3さんの見立て通りなら、これ以外になってる行があるはず。 その行が特定できて、対応する設定が確認できれば回避や修正方法も出てくると思います。

news1さんのコメント
DateTimeのインストールが完了しました。 これで./cybozu2ical>cybozu.icsを実行すると、特に反応はありません。 そのため上記にある以下の命令で実行を掛けました。 [root@www3274ui CybozuOffice6]# /var/www/html/cybozu2ical-0.36/cybozu2ical --conf /var/www/html/cybozu2ical-0.36/config.yaml --compat-google-calendar > /var/www/html/cybozu2ical-0.36/ical.ics そうすると以下のエラーが出ます。 Can't locate WWW/CybozuOffice6/Calendar.pm in @INC (@INC contains: lib /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 .) at /var/www/html/cybozu2ical-0.36/cybozu2ical line 15. BEGIN failed--compilation aborted at /var/www/html/cybozu2ical-0.36/cybozu2ical line 15. エラー内容がダミーと本サーバで違うため、判断に苦しみます。

a-kuma3さんのコメント
>> そうすると以下のエラーが出ます。 Can't locate WWW/CybozuOffice6/Calendar.pm in @INC << 今度は、「WWW::CybozuOffice6::Calendar が見つからない」と言ってます。 /var/www/html/cybozu2ical-0.36/lib/WWW/CybozuOffice6/Calendar.pm などが存在してますか?

news1さんのコメント
それは存在しています。同ディレクトリ内にあるのは次のとおりです。 Calendar Calendar.pm CalendarDriver CalendarDriver.pm

TransFreeBSDさんのコメント
/var/www/html/cybozu2ical-0.36/ にcdしてください。 WWW::CybozuOffice6::?はカレントディレクトリのlib以下から探します。 #つまりフルパスでなく「./cybozu2ical」で実行できるようにしてください cron使うなどの場合も、このあたりは注意点です。

news1さんのコメント
以下のとおり書き換えて実行しました。 ./cybozu2ical --conf ./config.yaml --compat-google-calendar > ./ical.ics cybozu.icsが出来上がり、googleカレンダーと同期を掛けると文字化けします。 これはconfig.yamlの設定を変えてテストしてみます。 ただ問題は、ダミーサーバでicsデータが作成できましたが、本サーバでは相変わらず、エラーが出ている状態です。 Can't use an undefined value as a HASH reference at ./cybozu2ical line 154. こちらを解決する方法はないでしょうか

news1さんのコメント
本サーバのconfig.yamlのdate_range: 1(1日分)に変更しカレンダーデータを当日予定のみにして 繰り返し予定やバナー予定を外して、通常予定のみでスクリプトを実行したのですが、結果は変わらずCan't use an undefined value as a HASH reference at ./cybozu2ical line 154.です。 これまでに入れた代表的なアプリは、office6(Apache、独自DB)desknet's DB(Apache、PostgreSQL9.0)などです。 他の何かのモジュールなどが悪さをしているのでしょうか?

a-kuma3さんのコメント
>> 本サーバのconfig.yamlのdate_range: 1(1日分)に変更しカレンダーデータを当日予定のみにして繰り返し予定やバナー予定を外して、通常予定のみでスクリプトを実行したのですが、結果は変わらず... << 154行目でエラーが出てるのは、generate_vcalendar サブルーチンで、カレンダーのデータを date_range の指定に関係なく読み込んでます。 date_range の指定が効くのは、update_vcalendar サブルーチンで、書き出すデータの範囲が指定できるだけのようです。 ダミーサーバでだけ、動作するのは、これが理由だと思います。 >|perl| # Generate a Data::ICal from a WWW::CybozuOffice6::Calendar my $vcalendar = generate_vcalendar( $cal, { %$cfg, %opt } );# ★ここでエラーが出てる if ( $opt{update} ) { $vcalendar = update_vcalendar( $vcalendar, $opt{update}, { %$cfg, %opt } );# ★date_range は、ここで使われる } ||<

a-kuma3さんのコメント
ただの想像なのですけれど、曜日指定の繰り返しで、土曜、または日曜のスケジュールがありませんか? 繰り返しのタイプで [12345] というのは曜日らしいのですけれど、6 や 7 とか、週末だけの繰り返し、みたいのがあるんじゃないか、って。

a-kuma3さんのコメント
TransFreeBSD さんがコメントに書いてくれた --output-csv オプションを指定したときに吐き出される CSV を確認してみてください。 コメントを再引用します。 >> ソースを追った限り、CSVで保存された5カラム目が $type になり、通常 %FREQUENCY のキーになっている[ymwdn12345]のいずれか1文字のはずです。 エラーがa-kuma3さんの見立て通りなら、これ以外になってる行があるはず。 <<

news1さんのコメント
./cybozu2ical --conf ./config.yaml --output-csv > ./ical.ics 上記で命令したところ、以下のコメントが帰ってきました Option output-csv requires an argument Usage: % cybozu2ical % cybozu2ical --conf /path/to/config.yaml cybozu2ical-0.36内のディレクトリには、何もデータは作成されていません。

TransFreeBSDさんのコメント
CSVファイルの件は、具体的には下記かな? >|| ./cybozu2ical --conf ./config.yaml --compat-google-calendar --output-csv ./output.csv > ./ical.ics ||< 「Can't use an undefined value as a HASH reference at ~」のエラー出ても保存はされてるはず。 ただ...いまさらですが.. http://code.google.com/p/ogawa/wiki/Cybozu2ICal >> calendar_driver: 使用するカレンダードライバーを指定します。デフォルトでは「ApiCalendar」が使われます。現在のところ、カレンダードライバーとしてApiCalendarとSyncCalendarの2つが使用できます。<strong>サイボウズオフィス6を使用している場合にはSyncCalendarを指定することを強く勧めます</strong>。それ以外の場合はデフォルトで問題ありません。 << SyncCalendarを使用した場合はどうでしょう。 これで解決したら笑っておきましょう :-> 余談 >> 繰り返しのタイプで [12345] というのは << 第○週というのだと思います :-) で $day が @WEEK_STRING に。

news1さんのコメント
config.yamlでの設定は、 calendar_driver: SyncCalendar になってました。

TransFreeBSDさんのコメント
「給食配達」の予定が怪しいですね。 ただ、私はサイボウズを使ったことがないので、対応する予定(多分繰り返し条件)がどのようなものか想像できません。 取り合えず同様の繰り返し条件の予定のみにしたテスト環境で変換できるか確認して、エラーがでるなら、それが原因という事になります。 修正のほうは、私にはどう変換してよいのか分からないので、ちょっと... #ちなみにこれって公開していいものなんですかね?

news1さんのコメント
ご配慮ありがとうございます。 データは念のため削除させていただきました。

news1さんのコメント
ご指摘のデータが原因でした。 無事icsファイルが作成できるようになりました。 ですが、googleカレンダーに同期させると文字化けしてしまいます。 output_encodingをutf8にしてもnrcにしても同様です。 これを解決する方法はありませんでしょうか。

a-kuma3さんのコメント
反応が鈍くって、すみません ><。 文字化けは、HASH のことを調べてるときに、ちょこちょこ情報がありました。 http://dameninngenn.sblo.jp/article/35403660.html >> URL指定でデータをインポートする場合、レスポンスヘッダで文字コードを指定しないと文字化けするようです。 << http://www.alglab.com/Home/ProgramTool/Cybozu2ical >> .htaccess 作って下記の指定をいれたら、化けなくなったみたいだ。 <<

news1さんのコメント
仮に下の方法を使う場合、.htaccessファイルを置くディレクトリは、wwwまたはhtmlに直接置くのででしょうか。

a-kuma3さんのコメント
.htaccess を置いたディレクトリから、その配下に影響が及びます。 /var/www/html/ が、http のドキュメントルートでしょうか。 /var/www/html/ もしくは、/var/www/html/cybozu2ical-0.36/ に置いてください。

news1さんのコメント
.htaccess に AddType "text/calendar; charset=UTF-8" .ics と書いて、cybozu2ical-0.36ディレクトリに置いて実行したのですが、文字化けが解消しません。 http://network.station.ez-net.jp/os/linux/daemon/httpd/ac/htaccess/centos/5.4.asp のサイトを参考に.htaccess を使用可能にする設定をかけたのですが、改善しません。 config.yamlは input_encoding: shiftjis output_encoding: utf8 calendar_driver: SyncCalendar の状態です。 この状態を改善する方法はないでしょうか。

a-kuma3さんのコメント
読ませようとしているファイルは、/var/www/html/cybozu2ical-0.36/ical.ics で、Google に読ませる URL は http://なにがし/cybozu2ical-0.36/ical.ics ってことで良いですよね? Google に読ませる URL のレスポンスヘッダを確認できませんか? Content-Type ヘッダが text/calendar; charset=UTF-8 になっているかどうか。 URL をさらしちゃうと、news1 さんの個人名までさらしちゃうしなあ...

news1さんのコメント
http://web-sniffer.net/ こちらのサイトで確認できました。以下内容です。 Connect to ××.×××.××.××× on port 80 ... ok GET /cybozu2ical/cybozu.ics HTTP/1.1[CRLF] Host: ××××.com[CRLF] Connection: close[CRLF] User-Agent: Web-sniffer/1.0.44 (+http://web-sniffer.net/)[CRLF] Accept-Encoding: gzip[CRLF] Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8[CRLF] Accept-Language: ja,en-US;q=0.8,en;q=0.6[CRLF] Accept-Charset: ISO-8859-1,UTF-8;q=0.7,*;q=0.7[CRLF] Cache-Control: no-cache[CRLF] Referer: http://web-sniffer.net/[CRLF] [CRLF]

a-kuma3さんのコメント
コメントに貼ってもらったのは、リクエストヘッダです。 その下に、表形式で表示される HTTP Response Header の Content-Type: を確認してください。

news1さんのコメント
これで大丈夫でしょうか? HTTP Response Header NameValueDelim Status: HTTP/1.1 200 OK Date:Tue, 13 Nov 2012 05:15:26 GMT Server:Apache Last-Modified:Tue, 13 Nov 2012 04:52:33 GMT ETag:"1e038c-13b7-4ce592f9fd3ba" Accept-Ranges:bytes Content-Length:5047 Connection:close Content-Type:text/calendar

a-kuma3さんのコメント
>> Content-Type: text/calendar << Content-Type が上記のようになっていて、charset=UTF-8 が付いていません。 .htaccess の指定が効いていれば、以下のようになってるはずなんです。 >> text/calendar; charset=UTF-8 << なんで効いてないのかなあ... もし、apache を再起動できるなら、reload じゃなくて restart してみるとか。 # 後、ちょっとなのに! ><。

news1さんのコメント
restartでも試してみましたが、結果は同じでした。 もう一つの方法 「直接icsファイルを指定するのではなく、php等でicsファイルを読み込み上記ヘッダを返すようにしたものを指定してやればうまくできます。」 を試してみたいのですが、「php等でicsファイルを読み込み上記ヘッダを返す」方法がわかりません。 これは難しい処理なのでしょうか?

a-kuma3さんのコメント
>> これは難しい処理なのでしょうか? << これ、そういうプログラムを php で書く、ってことです。 php のプログラムを書かなきゃいけないし、php を cgi として動かすために、AddHandler とか .htaccess とかにも定義を追加しなきゃいけないし。 ちょっと、ハードルが上がります。

a-kuma3さんのコメント
もしかして、デフォルトで php が使える状態になってる? であれば、試す価値があるかも。 ファイルを読み込んで、その内容を出すだけの短いサンプルを探してみました。 http://www.confrage.com/php/forward/download/download.html これを、ical.ics 用にちょっと書き換えます。 >|php| <?php // ダウンロード元ファイルを指定します。ファイルパス(絶対パス、ファイル名まで含む)を指定します。 $fullpath = '/var/www/html/cybozu2ical-0.36/ical.ics'; // HTTPヘッダ送信 header("Content-type: text/calendar; charset=utf-8"); // ファイルを読み込んで出力します。 readfile($fullpath); ?> ||< cybozu2ical-0.36/ に download.php という名前で保存して、パーミッションを 705 (または、755) にします。 Google に読み込ませる URL を http://なにがし/cybozu2ical-0.36/download.php に設定する。 って感じになるかと思います。

a-kuma3さんのコメント
あ、Google に読み込ませる前に、適当なブラウザで URL を開いてみる、のが先ですね。

news1さんのコメント
yum install phpでインストールしました。 すいません。ここで所用で時間切れです。 明日よりPHPのテストをしてみます。 ず?とお付き合いいただきありがとうございます。 できましたら、明日もよろしくお願いします。

a-kuma3さんのコメント
質問投入から、明日の朝9時で、七日間のリミットが来てしまうので、質問をキャンセルしても良いのかも。 ぼくがついていける範囲であれば、付き合うのは構わないですけどね。 そっかー、php はデフォルトで使えるようになってないんですね。 .htaccess で、AddType がきちんと効いてないことを解決しないと、php の導入でも苦労しそうな気がします。

a-kuma3さんのコメント
あ、php をインストールしたところを、あれなんですけど、ダウンロードの CGI を perl で書けば良いんじゃないか、ということに、いまさらながら気が付いた。 というわけで、↓のスクリプトをちょっといじる(ぼくは、perl が書けないので)。 http://chaichan.lolipop.jp/perlnote/perlnote2008-01-292.htm >|perl| #!/usr/bin/perl use strict; #宣言 my $FilePath = '/var/www/html/cybozu2ical-0.36/ical.ics'; my @FileName = split(/\\/, $FilePath); #ダウンロードファイルオープン open (DF, $FilePath) or die "cannot open '$!'"; #ヘッダー部ダウンロード print <<"HERE1"; Content-type: text/calendar; charset=utf-8 HERE1 #本体ダウンロード binmode DF; binmode STDOUT; while (my $DFdata = <DF>) { print STDOUT $DFdata; } #ダウンロードファイルクローズ close DF; ||< 最初の一行は、perl の置き場所によって /usr/local/bin/perl とかに変更する必要があるかも。 スクリプトを download.pl という名前で保存して、パーミッションを 705 (or 755) にするのは、php のときと同じ。 もし、.pl なファイルが cgi として動作するようになってなかったら、.htaccess に以下を追加して、httpd を restart。 >> AddHandler cgi-script .pl << 念のための確認ですけど、.htaccess のファイル名って、ファイル名の先頭はピリオドになってますよね?

a-kuma3さんのコメント
キャンセルで良かったのに。 これで、逃げられなくなっちゃったじゃないですか(嘘♪)

質問者から

モジュールの状況
cpanを使用してモジュールを再インストールした内容を転記します。

Text::CSV 1.0+
to find objects with matching identifiers.
Text::CSV is up to date (1.21).

DateTime
DateTime is up to date (0.77).

LWP
LWP is up to date (6.04).

Class::Accessor::Fast
Class::Accessor::Fast is up to date (0.34).

Data::ICal
Data::ICal is up to date (0.18).

YAML
YAML is up to date (0.84).


./cybozu2ical>cybozu.ics の実行時エラーについて。
Can't use an undefined value as a HASH reference at ./cybozu2ical line 154.

この154行には以下の内容が書かれてました。(実際には153行から転記)

153 # rrule
154 my %rrule = %{ $item->rrule };
155 $rrule{UNTIL} = to_icaldate( $rrule{UNTIL}, $item->is_full_day )
156 if $rrule{UNTIL};
157 $rrule{WKST} = 'SU'
158 if $param->{'compat-google-calendar'};

なお、config.yamlは次のように記述しています
cybozu_url: http://hoge/hoge/ag.cgi
calname: hoge-hoge
username: abcd
#userid:
password: hogepass
time_zone: Asia/Tokyo
tzname: JST
input_encoding: shiftjis
output_encoding: utf8
#calendar_driver: SyncCalendar
calendar_driver: ApiCalendar
date_range: 30



1-5件表示/8件
4.前の5件|次5件6.
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ