trial and error and error and...

勉強の記録とか、備忘録的な何か。

GoogleカレンダーにCSVファイルから予定をインポートする

ユビキタス・コンピューティング」という言葉。
数年前まではよく聞いた気がしますが、最近はめっきり「クラウド・コンピューティング」に淘汰されてしまった感があります。
両者の違いはよくわかりませんが、とりあえずクラウドのほうが言いやすいのは確かですね。

というわけで、今流行のクラウドですが、代表的なクラウドサービスといえば、やはりGoogle Appsでしょう。
私も活用していますし、もしかしたら活用を越えて依存の域に入っているかもしれません。
これはGoogleが世界を支配するのも時間の問題ですね。

Google Appsの中でも、Googleカレンダーにはスマートフォンを購入してからとてもお世話になっています。
ただGoogleカレンダーは、一度にたくさんの予定を登録したい時に、少々面倒なのが難点です。
私の場合、学校の行事予定表や、バイトのシフト表など、紙媒体に記載された予定をGoogleカレンダーに登録することが多いのですが、画面の切り替えが多く、これが結構なストレスになります。
そこで、何か予定を一括で登録するいい方法がないか探してみました。ありました。


CSVファイルから予定をインポート

CSV ファイルについて - Google カレンダー ヘルプ

ここでどうこう説明するより、リンク先を読んでいただいたほうがずっとわかりやすいですね。
しかしこれで終わってはわざわざ記事にする意味が無いので、いくつか補足説明を。

日付の書式

日付の書式は、yyyy/mm/ddです。
例えば、1985年10月26日ならば、1985/10/26となります。

ちなみに1985年10月26日は、映画『BACK TO THE FUTURE』でドクとマーティが初めてデロリアンの実験をした日です。
私の大好きな映画です。機会があれば是非見てみてください。

バック・トゥ・ザ・フューチャー [Blu-ray]

バック・トゥ・ザ・フューチャー [Blu-ray]

終日イベントの設定

終日の予定を登録する場合には、All Day Eventの項目をTrueにします。
終日イベントに設定した場合には、Start TimeとEnd Timeは無視されます。
また、通常の予定を登録する場合には、同項目をFalseにします。

通知の設定

通知の設定ですが、よくわかりません。
Reminder On/Offなどの項目をいじってみましたが、きちんと設定することが出来ませんでした。
全てデフォルトの通知設定になってしまいます。

デフォルトの通知設定の変更方法は、PCブラウザからの場合、
Googleカレンダーのトップ画面から、歯車アイコン -> 設定 -> カレンダータブ -> 任意のカレンダーの通知、と辿って行くことで変更できます。(2012年11月1日現在)

文字コードの設定

文字コードUTF-8に設定しましょう。SJISなどでは正しく登録されません。
改行コードは、特にどれを使っても変わりませんでした。


CSVファイルの作成方法

CSVファイルの主な作成方法は、Excelなどの表計算ソフトか、テキストエディタのどちらかでしょう。

Excelの場合

Excelの場合は、保存時に拡張子をCSVにすると勝手にカンマ区切りのフォーマットにしてくれます。
Excelの強力なオートフィルを駆使すれば、予定の編集がかなり楽になると思います。

テキストエディタの場合

テキストエディタの場合は、自分でカンマ区切りのフォーマットにする必要があります。
しかし、高機能なエディタならば色々な編集機能が使えるので、テキストエディタに慣れている方なら効率良く予定の編集ができるでしょう。

CSVファイルを作成するプログラムを組む

CSVファイルの中身は単純なテキストなので、これを作成するプログラムは言語にもよりますが簡単に作れます。
次回は、多数の予定の一括登録をもっと楽に行うために、Rubyを使ってCSVファイルを作成するプログラムを書いてみようと思います。

printfの戻り値

C言語を勉強しようと思った人が最初に学ぶ関数は、おそらくprintfでしょう。
かくいう私もそうでした。

任意の文字列の出力に使うこのprintf。
実は、出力した文字列のバイト数という、int型の戻り値を持っています。


使用例

ソース

#include <stdio.h>

int main(void)
{
	int a;
	a = printf("kitty on your lap\n");
	printf("%d\n", a);
	
	return 0;
}

実行結果

kitty on your lap
18

"kitty on your lap"という文字列。
スペースも含めると、17文字ですね。それに加えて改行文字があるので、18文字。
半角英数字は1文字1バイトなので、出力する文字列は18バイトとなります。


応用例

この戻り値を利用して、任意の変数の桁数を知ることができます。

ソース

#include <stdio.h>

int main(void)
{
	int a, b;
	char dummy[10];
	
	a = 123456;
	b = sprintf(dummy, "%d", a);
	printf("%d\n", b);
	
	return 0;
}

実行結果

6

まず、変数の内容を画面に出力する必要は無いため、sprintfを用いてダミーに文字列を出力しました。
sprintfは、printfの出力先が標準出力から変数になった関数です。

正攻法で行けば、任意の整数を0になるまで10で割り続け、割った回数を桁数とするところですが、printfの戻り値を利用すれば、このように非常に簡単に桁数を知ることができます。
ただし、負符号が付くと出力される文字がひとつ増えるので、そういった場合などには注意が必要です。