Tombloo で Google カレンダーへ予定を高速投稿

2010/02/09 追記

注意 : 標準で Google カレンダー対応になりました。この Tombloo パッチはもう必要ないです。(対応になったのは随分前だけど、この記事を見ている方が結構いるようなので念のために追記。)

2009/03/25 追記

Amazonの商品明細からGoogleCalendarに登録するTomblooのパッチ - zorioの日記
既に、似たようなパッチがありました。あわわ...検索したら上位にありました。もっと良く調べるべきでしたねー

作りました。

Google ブックマーク用のモノをチョコッと書き換えただけですが...
Google カレンダー用の Tombloo パッチ(であっているのかな??追加機能的なモノ)を作ってみました。

仕組み

Google カレンダー 英語版には "Quick Add" という、予定を手軽に追加できる便利な機能があります。
その機能を Tombloo から利用します。
特にこれといった理由はないですが Google カレンダーのモバイル版を利用しています。
○○発売日 2009/03/30
とか
○○発売日 monday
と入力して、予定を投稿します。改行は使わない方がいいかも。
日付の部分は(英語版の機能ゆえに)日本語では通りません。*1
記法の詳細は About the 'Quick Add' feature - Google Calendar Help を参照してください。

使う

無保証です。
googlechalendar.js を右クリックで保存してください。
保存先は Tombloo の script フォルダです。
script フォルダは、規定値では下記の場所になります。Tombloo の設定で "データ/スクリプトディレクトリ" を変更していた場合は下記とは異なります。
  • Profiles*2
    • xxxxxxxx.default*3
      • bookmarkbackups
      • chrome
      • 他にも様々なフォルダが...
      • Tombloo
        • photo
        • script

ソースコード

models.register({
    name : 'Google Calendar',                                               // 名称
    ICON : 'http://calendar.google.com/googlecalendar/images/favicon.ico',  // アイコンの URL

    check : function(ps){                                                   // データの形式
        return ps.type=='regular';                                          // テキスト形式を指定
    },

    post : function(ps){
        return request('http://www.google.com/calendar/m', {                // Google カレンダーモバイル版にアクセス
            queryString :	{                                               // クエリの設定
                hl : 'en',                                                  // 英語版を指定
            },
        }).addCallback(function(res){
            var doc = convertToHTMLDocument(res.responseText);
            if(doc.getElementById('gaia_loginform'))                        // ログインフォームが表示される場合は失敗
                throw new Error(getMessage('error.notLoggedin'));

            var fs = formContents(doc);                                     // フォームを取得
            return request('http://www.google.com/calendar/m', {            // 処理するプログラムの URI (action 属性)
                redirectionLimit : 0,
                sendContent  : {
                    ctext      : ps.description,                            // description に入力した値を追加する予定に
                    secid      : fs.secid,
                    as_sdt     : fs.as_sdt,                                 // 投稿日
                },
            });
        });
    },
});

*1:例えば、"今日" とか "2009年03月30日" とか

*2:Firefox のプロファイルフォルダ

*3:ランダムな 8 文字の英数字 . 任意のプロファイル名