calfwからGoogleカレンダーを編集するcalfw-gcal.elを書いてみた

こないだ@kiwanamiさんがリリースしたcalfw.elが本当に素晴らしいんです。

Emacsでカレンダーコンポーネントを作った – 技術日記@kiwanami

早速使わせてもらって、faceとかもちょこっと変えて今は↓のような感じになってます。

http://art35.photozou.jp/pub/203/61203/photo/64656340.v1295276288.png

Emacs標準のcalendarは、ろくに起動することすらありませんでしたが、calfw.elは一等地キーバインドを割り当てて常用させてもらっています。いつも素敵なelispありがとうございます。

calfw.elの特に素敵なところはicalと連携できるところで、googleカレンダーを常用している僕としては非常にありがたいところです。

ただ、calfw.elはicalを表示するだけで、googleカレンダーの予定を編集したりすることはできないようです。ここまで来るとEmacsからgoogleカレンダーの予定も管理したい!!

てことで、calfw.elのインターフェイスからgoogleカレンダーを編集するcalfw-gcal.elなるものを書いてみました。

googleclのインストール、設定

calfw-gcal.elはgoogleカレンダーの編集をgoogleclを介して行うので、googleclをインストールしておく必要があります。googlecodeにあるので、まずはインストールしておきましょう。

Downloads – googlecl – Project Hosting on Google Code

インストール後は、認証作業が必要です。ターミナルからgoogleclの何かしらのコマンドを入力すると、ブラウザが開き、認証を促されますので、仰せのとおり認証しときましょう。

次にgoogleclの設定ファイルを編集しておく必要があります。ubuntuでは、~/.config/googlecl/configが設定ファイルとなっています。その中に次のような内容を追記、すでにある場合は適宜編集しておきます。

delete_by_default = True
delete_prompt = False

calfw-gcal.elのインストール

次のサイトからcalfw-gcal.elを落としてきましてロードパスの通ったところに置けば、

myuhe/calfw-gcal.el – GitHub

後は.emacsなんかに次のように書いておきます。 以下の例では、カレンダーの用件入力バッファを開くキーに「a」をあてていますが、お好みで変えてください。

(require 'calfw-gcal)
(define-key cfw:calendar-mode-map (kbd "a") 'cfw:gcal-main)

予定の追加

calfw.elから開いた*cfw-calendar*がカレントバッファになっている状態で、aキーを押すと*calfw:gcal-edit*バッファが開きます。

終日の予定を入力する場合は、その用件を入力するだけです。時間が決まっている場合は用件、開始時刻、終了時刻を半角空白区切りで入力します。次のような感じになると思います。”hoge 10:00 12:00″

開始時刻しかわかってない場合は”hoge 10:00″や”hoge 10″と書くだけでも良いです。終了時刻は自動的にその1時間後になるようです。

入力が終わった後はいつものC-c C-cで送信。*calfw:gcal-edit*バッファはお役目を果たし、勝手に閉じます。

予定の削除

削除したい用件がある日にフォーカスを合わせた状態で*calfw:gcal-edit*バッファを開きます。*calfw:gcal-edit*バッファに削除したい用件を入力し、C-c C-d押せば、予定が削除されます。

あとがき

いかがでしたでしょうか。できたばかりのcalfwですが、すでにマストelispとなってしまいました。まだ、いろいろと連携できるところもありそうですよね。例えばメーラーから直接calfwに内容を転送とかしてごにょごにょとか楽しそうです。夢が広がりまくります!!

追記 2011-01-19

@pecculさんからキーバインドの設定が抜けてるとご指摘ありましたので、一部修正しました。 @pecculさん、ありがとうございます!!