Webページ上に「Google カレンダー」を埋め込むと、スケジュールの公開・共有が手軽に行えるので便利かと思います。
埋め込みの際、「Google カレンダー埋め込み支援ツール」にて背景色の指定が可能ですが、背景色の指定を変更してもタイトルやカレンダーの表示を切り替えるインタフェース周辺のみしか適用されず、肝心のカレンダー部分はブルー系の配色のままです。
そこで、U-notez Blogの記事「Easy Color Customization for Embedded Google Calendars」で配布されているプログラムを利用し、カレンダー部分の配色を変更してWebページに埋め込む方法をご紹介します。
表示サンプル
- 通常の埋め込み時
- プログラムを利用した埋め込み時
埋め込み手順
- Google カレンダー埋め込み支援ツール(詳細はGoogleのヘルプ「ウェブサイトへの埋め込み」を参照)にて埋め込みコードを取得します。その際、背景色はデフォルト(白)のままにしておきます。
- gcalendar-wrapperをダウンロードします。
- ダウンロードしたファイルを解凍しgcalendar-wrapper.phpを開くと23行目から30行目で色の設定があるので、任意の色に書き換えます。
/** * Set your color scheme below */ $calColorBgDark = '#c3d9ff'; // 濃い方の背景色 $calColorTextOnDark = '#000000'; // 濃い背景色上のテキスト色(曜日・タイムゾーン) $calColorBgLight = '#e8eef7'; // 薄い背景色(日付の背景) $calColorTextOnLight = '#000000'; // 薄い背景色上のテキスト色(日付) $calColorBgToday = '#ffffcc'; // 本日を表す背景色
- 埋め込みコード内にある
iframe
のsrc属性値を次のように書き換えます。<!-- 変更前 --> src="https://www.google.com/calendar/b/0/embed?(Google カレンダー埋め込み支援ツールで出力した文字列)" <!-- 変更後 --> src="gcalendar-wrapper.php?(Google カレンダー埋め込み支援ツールで出力した文字列)"
- カレンダーを埋め込んだHTMLファイルとgcalendar-wrapper.phpをアップロードします。
表示期間変更ボタンの変更
先に紹介した手順で色の変更を行ってもカレンダーの表示期間を前後に操作するボタンはデフォルトの色のままです。これはGoogleのサーバーにアップロードされている画像を読み込む指定になっているためです。
これを変更するには、ボタン画像を用意し、gcalendar-wrapper.phpの116行目付近を下記スタイルを記述し、デフォルトのスタイリングを上書きします。画像のパスは絶対URIで指定して下さい。
.navBack{
background:url(http://(ドメイン)/images/btn_left.png) no-repeat left top !important;
}
.navForward{
background:url(http://(ドメイン)/images/btn_right.png) no-repeat left top !important;
}
/* week view */
- GoogleのようにCSSスプライトを利用するとベターです。
表示サンプル
追記:IE9以上の表示不具合に関して(2012年6月12日)
「IE9以上で閲覧した際に直近の予定しか表示されない」という不具合があるようです。配布元で確認したところ、この問題はIEが搭載する互換性機能に関連しているようです。
具体的には、GoogleカレンダーのHTMLにはmeta要素でX-UA-Compatible
をIE=EmulateIE7
と指定してあり、マークアップを勘案するとIE7標準モードで描画されることが期待されています。一方IE9以上では、"最上位のページが IE9 の標準モードで表示される場合、そのページに含まれるすべての IFrame が IE9 の標準モードで表示される
"という仕様があり(詳細はMSDN Blogsへ)、X-UA-Compatibleの値にかかわらずIE9標準モードでレンダリングされることになります。その結果、不具合が生じるようです。
当面の回避策としては、本記事で紹介したPHPを利用してカレンダーを埋め込むページのhead内に、次のようにX-UA-Compatibleを設定する方法が挙げられます。
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE8">