« 拍手 | トップページ | 『少年カフカ』 »

2009年2月18日 (水)

CSVカレンダーを作る。

これは以前に書いたかもしれませんが、またメモ代わりに記しておこうと思います。予定は仮のものです。

紙で配布された新年度のカレンダーがあるとします。拙者は、これをできるだけ効率よく、自分が利用している Google Calendar (Gcal) に設定したいです。そして、下のように、Gcal の「o月o日」の欄には、この日が第o回目の月曜日である」と表示させます。これは5月の一部ですが、5月11日が第4回目の月曜日であることがわかります。こういうのが欲しいわけです。

Gcal_may_6



授業の回数は月-金曜日がそれぞれ1学期あたり15回あります。1-2学期だと全部で150回です。これを手動で入力するのはいくらなんでもひどすぎます。さいわい、GcalにはCSVファイルをインポートする機能があるので、これを利用します。CSVとは “Comma Separated Values” のことで、下のようにコンマでデータが区切られた形式のことです。表計算ソフトでもエディタでも読み書きできます。これを設定するCSVファイルを下のように書いておいて、これをインポートすれば良いのです。

Subject,Start Date,Start Time
Wed_4,2009/5/13,
Wed_5,2009/5/20,
Tue_4,2009/5/12,
Tue_5,2009/5/19,
Mon_4,2009/5/11,
Mon_5,2009/5/18,

GcalにインポートするCSVファイルについてヘルプを見たら、「すべての CSV ファイルには、正しい形式のヘッダーが必要です。Google カレンダーに予定をインポートするために最小限必要なヘッダー情報は、「Subject」、「Start Date」、「Start Time」です」とあります (*1)。最後の情報は拙者のカレンダーには必要ないので空欄です。ただ、データの区切りは必須なので、コンマを忘れずに入れます。問題はこのような CSV を表計算ソフトで作成する方法です。

Gcal_day_2


C列の書式は「日付」のうち、たとえば「2009年4月1日」型を設定します。要するに見た目です。C2セルに「2009/4/1」と入力します。すると設定した書式で「2009年4月1日」と表示されます。そして、C3セルには「=C2+1」を入れると、日付がひとつ増えた、つまり翌日の「2009/4/2」になります。あとは、C3セルを普通に下の方までコピペします。がんばってペーストして、「2010年3月31日」まで作成します。

これからは Subject欄に入れる “Wed_4” の形式を作る下準備です。拙者は曜日を基準にしたカレンダーを作成したいので、曜日名を入れます。上図のE列です。これも当然、手作業ではやりません。E列の書式は「標準」です。E2セルに「=TEXT(C2,"ddd")」 と書きます。“ddd” というのは曜日名を英語で短く “Wed” などと表示する印です。実は表示されるだけでは困るのです。表示は “Wed” でも内容は日付ですから、このままでは曜日のE列を基準に並べ替えたとしても、日付のC列を基準に並べ替えたのと同じで、意味をなしません。E2セルの完璧に文字列として扱うと、E列でソートしたときにまともな結果が得られます。この文字列に変換する関数が “=TEXT” です。あとは、このセルを下の方までコピペです。

次に、土日、祝日など授業がないところは別の列に “No“ などと書いておきます。この列と曜日の列を基準に並べ替えて、紙でもらったカレンダーを参照しながら、上図には見えていない F列に「o回目」を表す数字を入れます。最後に、E列の曜日名とアンダーバーとF列の回数を文字列として連結します。関数は、”=CONCATENATE“ です。これでできた ”Wed_1“などをテキストの形式で、上図には見えていませんが、 Subject欄にペーストします。

これを CSVファイルに書き出して、Gcal にインポートします。あとで訂正しやすいように、独立したテスト用カレンダーを作っておいて、そこにインポートするのが良いと思います。既存のカレンダーに入れてしまうと、間違いを訂正するのが大変です。表示が意図するものであることを確認したら、とりあえずは作業の終了です。CSVファイルは Gcal を利用しているチームのメンバーに配布できます。また、マックで iCal を使っているメンバーがいたら、その人のために Gcal から ics フィルをエクスポートしたものを渡します。

ここまでやってきてわざわざ印刷することもないのですが、一度にできる印刷は gCal だと最大でひと月分までみたいなので、もっと長い期間をまとめてプリントできる iCal が便利かもしれません。

(*1) http://www.google.com/support/calendar/bin/answer.py?answer=45656&topic=15286

上記の手順をいきなり行うのはめんどうかもしれませんが、150回の予定を手作業で入れていくよりは はるかに効率的だと思います。効率的とは、時間と労力が少なくて済むということですし、間違いも少なくなります。

 

|

« 拍手 | トップページ | 『少年カフカ』 »

デジタルもん」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)


コメントは記事投稿者が公開するまで表示されません。



« 拍手 | トップページ | 『少年カフカ』 »