@ledsun blog

無味の味は佳境に入らざればすなわち知れず

グーグルカレンダーに予定を追加するURLを作るライブラリを作りました

Node.jsとブラウザどちらでも動くように作ってあります。

作った理由

Google Chrome拡張で使いたかった。探してもURLだけを作ってくれるライブラリがありませんでした。

URLは作ってくれるだけど、ボタンを作る機能は不要でした。

仕様メモ

作るにあたって公式仕様を調べたのですが、見つけられませんでした。 ぐぐって分かった情報を残しておきます。

終日予定(allday event)を作る方法を調べるのに苦労しました。

action(必須)

action=TEMPLATE

TEMPLATE固定です。

text

text=Garden%20Waste%20Collection

予定のタイトルです。 URLエンコードします。

空文字を指定すると(日本語の場合)無題の予定になります。

dates

dates=20090621T063000Z/20090621T080000Z

予定の開始と終了時刻です。 ISO日付フォーマットでUTCを指定します。 付けないと現在時刻から設定されます。

終日予定の場合は日付のみを指定します。

dates=20131208/20131209

ユーザーのタイムゾーンを使う場合はZをつけません

dates=20131208T160000/20131208T180000

location

location=Home

予定の場所です。 URLエンコードします。

details

details=Happy

予定の詳細です。 URLエンコードします。

参考リンク

stackoverflowです。

TDDについて

このライブラリはTDDで作りました。 TDDを採用した理由

  • Google Chrome拡張での動作確認はテンポが悪い
    1. Google Chrome拡張を読み直す
    2. ブラウザのタブを切り替える
    3. 対象サイトを読み直す
    4. ロード待ち
    5. 結果を確認
  • 入力データが限定されていた。作るGoogle Chrome拡張の仕様も大体決まっていた
  • 出力仕様が明快だった。迷ったらGoogleカレンダーが期待通りに動くURLにすれば良かった
  • コードのイメージはあった。詳細設計するのは面倒くさかった。三角測量したかった

ライブラリを作る時はTDDがいいですね。

power-assertについて

テストコードを書くのにt_wadaさん作の twada/power-assert · GitHub を使いました。

実に良いです。テストに失敗した時だけ、詳細な値を表示してくれるのはとても自然で、そして便利でした。 まるで、気の利いた執事とテストをしているようです。

power-assertは良いものです。次も使います。

参考図書

テスト駆動JavaScript サーバサイドJavaScript Node.js入門 実践Node.js プログラミング