• このエントリーをはてなブックマークに追加

2009-08-02 09:17 追記
Firefoxでブックマークレットをクリックして時間指定後,「false」とか表示されるのを修正しました.

はじめに

ふと気になったので,指定した時間に何らかの処理をさせるスクリプトを書いてみました.

ソースコード

(function (dt,y,m,d,hh,mm,ss) {
  try {
  if( /^\s*$/.test(dt) ) { throw(new Error()); }
    dt = dt.split(/[-: ]/);
  }
  catch(e) {
    alert('Canceled or Error.');
    return false;
  }
  window._R = function (s) { return (s || '0').replace(/^0+/,'') || '0'; };
  y  = _R(dt[0]);
  m  = _R(dt[1]);
  d  = _R(dt[2]);
  hh = _R(dt[3]);
  mm = _R(dt[4]);
  ss = _R(dt[5]);
  window._D = new Date();
  if( _D.getFullYear() == y && _D.getMonth()+1 == m && _D.getDate() == d && _D.getHours() == hh && _D.getMinutes() == mm && _D.getSeconds() == ss ) {
    // ここに実行したい処理を書く
    alert( 'Alert!' );
    return true;
  }
  else {
    var _f = arguments.callee;
    window._T = setTimeout(function () {
      _f([y,m,d,hh,mm,ss].join('-'));
    }, 1000);
    return false;
  }
  return false;
})(prompt('datetime? [ex. 2009-08-02 07:30:00]'));

ブックマークレット

ブックマークレットにしてみました.

なお,ブックマークレットの作成には,こちらのツールを利用させていただきました.

ちなみに注意したい点がひとつ./[ ]/ のような半角スペースにマッチさせる正規表現を利用した場合,このスペースが削除されてしまうため,生成後に入れ直す必要があります.

おわりに

なんか1秒くらいズレますが,まぁ気にしないでくださいw

処理部分に,

  • Twitter API を利用してつぶやきをポストする
  • Macのsayコマンドを呼び出すようなスクリプトへリクエストを送る

のようなものを書けば,少しは幸せになれそうですね.