よく使う Firefox add-on のひとつが、 iMacros なるもの(厳密には名前の右肩にTMが付く)。browser-based macro recorder
であり、Webブラウザを使った操作を記録&再生することができる。
で、今日メモっておきたいのは、iMacros と JavaScript を組み合わせる方法について。iMacros のマクロはいくつかのコマンドからなっているが(Command Reference - iMacros に掲載されている)、一般的なプログラミング言語が提供するような関数や制御構造、データ構造をもたない。そこを JavaScrpt で補完しよう、という話。
例
環境は Firefox 14.0.1, iMacros for Firefox 7.5.0.4.
- 1. マクロを記録
- まずは簡単なマクロをひとつ作るため、google.co.jp を開いて検索する操作を記録してみた。そうすると、次の内容のマクロ(#Current.lim)ができた。
-
VERSION BUILD=7500718 RECORDER=FX TAB T=1 URL GOTO=https://www.google.co.jp/ TAG POS=1 TYPE=INPUT:TEXT FORM=NAME:f ATTR=ID:lst-ib CONTENT=foo
- ここで、
foo
の部分が検索した文字列に相当する。 - 2. マクロを編集(変数の導入など)
- 記録したマクロをもとにして、繰り返し検索を行う処理をJavaScriptで作ることにする。そのための準備としてまずはマクロ "#Current.lim" を "my.lim" にリネーム。それから内容を編集。
- 第一に、新しいタブを作ってフォーカスを移すための iMacrosコマンド
TAB OPEN
とTAB T={{!VAR1}}
を追加する。{{!VAR1}}
はタブの番号を指定するために導入した変数。 - 第二に、JavaScriptから指定した文字列で検索を行うことにしたいので、
foo
を{{!VAR2}}
と置換。 - 結果、マクロは次の内容になった。
VERSION BUILD=7500718 RECORDER=FX TAB OPEN TAB T={{!VAR1}} URL GOTO=https://www.google.co.jp/ TAG POS=1 TYPE=INPUT:TEXT FORM=NAME:f ATTR=ID:lst-ib CONTENT={{!VAR2}} TAG POS=1 TYPE=INPUT:BUTTON ATTR=VALUE:Google<sp>検索
- 3. JavaScriptを作成
- とりあえずテキトーにマクロを作って、my.js とリネームしてから編集。
iimSet, iimPlay
という2つのインターフェースを利用してJavaScriptを書く。具体的には、マクロに導入した変数{{!VAR1}}
に、タブ番号をiimSet()
という関数でセット。それから配列にはいっている文字列 foo, bar, baz を{{!VAR2}}
にセット。最後に、iimPlay()
で my.lim を実行する。 var a = ['foo', 'bar', 'baz']; for(var i=0, n=a.length; i<n; i++){ iimSet("VAR1", i + 1); iimSet("VAR2", a[i]); iimPlay("my"); }
- 4. JavaScriptを実行
- 作成した JavaScript(my.js)を保存して、実行する(Playボタンとか)。うまくいくとタブを新規作成して検索する操作が3回繰り返される。
- ※空白のタブがひとつできてしまうから、いまひとつなところがあるのかもしれないな。。。
0 件のコメント:
コメントを投稿