RC3の無職しょ日記 このページをアンテナに追加 RSSフィード Twitter

2007年12月29日

Sleipnirスクリプトを使ってGmailのラベルなしメールを検索する

rubyきもい・インストロール面倒という声が聞こえてきませんでしたので、rubyよりは手軽なJavaScript版を作りました。メモ帳があれば、実行できますよ!

用意するもの(自分の環境

  1. Sleipnir 2.6.1
  2. Gmailラベルなしメール検索スクリプト(後述)

rubyと比較して、なんと、半分に減りました!!!!!!!!!!!!!!!

準備

  1. Sleipnirをインストールする。
  2. Gmailラベルなしメール検索スクリプトをgmailnolabel.jsとか名前をつけて保存して、\sleipnir\scripts配下に置く。
  3. Sleipnirのメニュー →→ スクリプト →→ スクリプトの再読み込み
    1. スクリプトメニューに『gmailnolabel.js』が出てくる

実行

  1. Gmailを『簡易 HTML 形式』で開く。
    1. 注)諸事情により、『簡易 HTML 形式』にしか対応していませんm(__)m
    2. 注)スクリプトを実行する前に、アクティブタブでGmailを開いておく必要があります。
  2. スクリプト →→ gmailnolabel.jsを選択。

⇒実行されるはず。

  1. Sleipnirスクリプトがよくわかんね
  2. DOMがよくわかんね
  3. JavaScriptがよくわかんね
  4. Gmailよくわかんね
    1. 隠しコマンドでnolabel検索できそう?

Gmailラベルなしメール検索スクリプト

概要
  1. アクティブタブのソースから、検索フォーム・検索ボタン・ラベルを抽出する。
    1. アクティブタブのリンク先が、Gmailドメインかのチェックは行っておりません。
  2. 検索フォームへラベルを勝手入力して、検索ボタンを勝手にクリックします。

DOMの考え方を使えばもっとスマートになると思う。でもDOMしらんし。

ソース
/**
 *
 * Gmailのラベル無しメールを検索する
 *
 * 改版履歴
 * v0.1.0 2007/12/29 新規作成
 *
 * URL:http://d.hatena.ne.jp/RC3/
 *
*/


/* 初期化 */
pnir = new ActiveXObject("Sleipnir.API");
tabindex = pnir.ActiveIndex;
docid    = pnir.GetDocumentID(tabindex);
window   = pnir.GetWindowObject(docid);
document = pnir.GetDocumentObject(docid);

/* デバッグ用 */
/*
pnir.OutputVisible = true;
pnir.OutputClear();
*/

function main() {
  /* 初期エラー判定 */
  if (document == null) {
    pnir.MessageBox("初期化エラー");
    return;
  }

  /* 検索フォーム抽出 */
  var q = document.getElementById('q');
  if (q == null) {
    pnir.MessageBox("検索フォームが見つかりません");
    return;
  }

  /* 検索ボタン抽出 */
  var b = document.getElementById('nvp_site_mail');
  if (b == null) {
    pnir.MessageBox("検索ボタンが見つかりません");
    return;
  }

  /* ラベル抽出(ラベル無し判定)*/
  var iter = document.getElementById('label_none');
  if (iter) {
    pnir.MessageBox("ラベルが見つかりません");
    return;
  }

  /* ラベル抽出(Gmailの表示モード 通常/簡易 判定)*/
  iter = document.getElementById('prf_l');
  labels = new Array();
  /* 簡易モード */
  if(!iter) {
    fonts = document.getElementsByTagName('font');
    for (i = 0; i < fonts.length; i++) {
      font = fonts[i];
      if (font.getAttributeNode("color").value == '#006633'
        && font.parentNode.nodeName == 'A'
        && (font.parentNode.parentNode.getAttributeNode('class').value == 'lb'
          || font.parentNode.parentNode.nodeName == 'B')) {
        label = font.firstChild.nodeValue.replace(/.\(\d+\)$/, '');
        labels.push(label);
        /* pnir.OutputAddString('<' + label + '>'); */
      }
    }
  }
  /* 通常モード */
  else {
    /*
    http://jaidev.info/home/hacks/gmailUnlabelled
    while (iter.previousSibling != null) {
      iter = iter.previousSibling;
      str = str + ' -label:' + iter.getAttribute('id').substr(3).replace(/[/\ &]/g, '-');
    }
    */
  }

  var str = '-label:' + labels.join(' -label:');
  q.innerText = str;
  b.click();

}

main();

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証