Google カレンダーでiCal形式を読み込むと文字化け

Googleカレンダーにical形式(*.ics)のファイルを別カレンダーとして登録したときに文字化けしていた原因が分かりました。

Googleカレンダーではレスポンスのヘッダーに文字コードを指定しないと駄目らしい。ここのブログで教えてもらった。

icalが置いてあるディレクトリの.htaccessに
addtype text/calendar; charset=utf-8
を記述してみたりしたけど駄目だったので、PHPでさくっと作りました。

<?php
header('Content-Type: text/calendar; charset=utf-8');
$sFile = $_GET['ical'];
readfile($sFile);
?>

このファイルをical.phpとすると
http://www.hoge.com/ical.php?ical=suganuma.ics
というアドレスをGoogleカレンダーに設定すると、文字化けせずicalファイルを読み込んでくれます。

Googleカレンダーは携帯でもみれるので、これで会社のスケジュールをいつでも携帯から閲覧可能に。ちなみにGoogleカレンダーの携帯用アドレスは

http://www.google.com/calendar/m

<2008/09/16 追記>
コメントで指摘がありましたが、上のコードはあまりにセキュリティがダメダメなので各自'ics'ファイルに限定するとか、やってください。

<2009/08/28 追記>
一応備忘録のために修正版をアップ。

<?php
$sFileName = $_GET['ical'];
if (strpos($sFileName, '.ics') === false) {
    $sFileName .= '.ics';
}
if (file_exists($sFileName)) {
    header('Content-Type: text/calendar; charset=utf-8');
    readfile($sFileName);
}

コメント

  1. ical.php?ical=/etc/passwd とやりたくなりますね。

    返信削除
  2. コメントありがとうございます。
    そうですね。セキュリティまったく無視なので、icsファイルに限定するとかやらないと駄目ですね。お恥ずかしい・・・

    返信削除
  3. はじめまして。当方も同じ壁にぶつかりました。ここに書かれている方法を試してみたのですが、グーグルカレンダーがical.phpを起動させて読み込んだようなのですが、表示まで行きません。読み込んだというのは、data.icsの中で指定したタイトルを他のカレンダーの名前として表示しているから、そのように判断しました。それで、お聞きしたいのですが、このical.phpを使って現在も動いているでしょうか?どうも、グーグルカレンダーは定期的にデータを読みに行く前に、データの更新があるか否かを判断しているような気がしています。ical.php自体が更新されていないとアップデートしてくれないんじゃないですかね?そのあたりを含めて現状を教えていただければ幸いです。

    返信削除
  4. こんにちは。
    私の環境では現在basic認証をつけるようにしたのでGoogleカレンダーと同期していませんでしたが、試しにPHPファイルだけGoogleカレンダーから参照できるようにしてみました。

    下記記事を参考に。
    http://se-suganuma.blogspot.com/2009/09/googleical.html

    私の環境では、ちゃんと表示されていますが、Googleカレンダーはキャッシュを参照するようなので、登録、削除を繰り返したりしていると表示できないかもしれません。
    その場合はしばらく時間をおいて(1時間ぐらい)試してみてください。

    返信削除
  5. ありがとうございます。昨日から何度かリトライさせていただいています。その過程でキャッシュと書かれている意味がやっと分かりました。いくらリトライしてアップロードしても、古いファイルしか見てくれていないようですね。
    セキュリティ対策のapatchのコードも拝見させていただきました。ただ、apatchの方のコードはまだ分からないものですから。もう少し勉強して利用させていただきたいと思います。

    返信削除
  6. 私のところでは、キャッシュが災いしてだと思うのですが、かなり試行錯誤しました。最終的には、.htaccessの記述で文字化けせずに読んでくれたと思っています。グーグルへの反映のタイミングが非常に分かりづらく、修正版を反映させるだけでもかなり苦労しました(次なる挑戦者へのささやかなアドバイス)。いろいろ参考にさせていただき、ありがとうございました。

    返信削除
  7. いろいろと苦労されたみたいですね。(^^;

    なんにせよ、出来たみたいでよかったです。

    返信削除

コメントを投稿

このブログの人気の投稿

オンサイトサポートとは(=出張サポート)

スタートアップで起動するアプリを停止する方法

既存のディレクトリ(フォルダ)にgit cloneして上書きしたい