JavaScriptでiMacrosのマクロを繰り返し実行する方法

JavaScriptでiMacrosのマクロを繰り返し実行する方法

Posted at June 24,2014 1:33 AM
Tag:[iMacros, JavaScript]

JavaScriptでiMacrosのマクロを繰り返し実行する方法を紹介します。

1.はじめに

ブラウザでマクロを動作させるiMacrosは「iMacrosのTAGコマンド詳説」で紹介したような独自のフォーマットによる記述が必要です。

が、iMacrosのマクロはJavaScriptと連携させることも可能です。

ここではFirefoxのアドオンを使い、JavaScriptと連携させてマクロを繰り返し実行する方法を説明します。

2.サンプル

まず、JavaScriptと連携させるためのマクロを作成します。

ブラウザの操作をマクロ化する「iMacros」」を参考にして、

  • Googleのページ(https://www.google.co.jp/)を開く
  • 検索フィールドに「abc」を入力
  • 検索実行

とう手順のマクロを記録し、「google.iim」という名前で保存します。

作成したマクロは次のようなものになります(操作方法によっては内容が若干異なります)。

VERSION BUILD=8820413 RECORDER=FX
TAB T=1
URL GOTO=https://www.google.co.jp/
TAG POS=1 TYPE=INPUT:TEXT FORM=ID:tsf ATTR=ID:lst-ib CONTENT=abc
TAG POS=1 TYPE=INPUT:SUBMIT FORM=ID:tsf ATTR=NAME:btnK

ちなみにこの作成したマクロ「google.iim」を選択して「Play」→「Play」で実行させれば、次のような結果になります。

3.マクロをJavaScriptと連携させる

前項で作成したマクロをJavaScriptと連携させ、検索文字列「abc」を「foo」「bar」「hoge」という3つの文字列に入れ替えながら繰り返し実行するようにしてみます。

まず、先ほど作成したマクロに含まれる文字列「abc」の部分を「{{!VAR1}}」に変更し、最後の行に「WAIT」コマンドを追加します。ここでは検索結果表示後、3秒待つようにします。

VERSION BUILD=8820413 RECORDER=FX
TAB T=1
URL GOTO=https://www.google.co.jp/
TAG POS=1 TYPE=INPUT:TEXT FORM=ID:tsf ATTR=ID:lst-ib CONTENT={{!VAR1}}
TAG POS=1 TYPE=INPUT:SUBMIT FORM=ID:tsf ATTR=NAME:btnK
WAIT SECONDS=3

次に、上記のマクロをキーワードを変更しながら繰り返し実行するためのJavaScriptを作成します。

JavaScriptの内容は次のとおりです。

var searchString = ['foo', 'bar', 'hoge'];
for(var i=0, max=searchString .length; i<max; i++){
  iimSet("VAR1", searchString[i]);
  iimPlay("google");
}

コードの説明ですが、まず検索キーワードを配列で定義します。

var searchString = ['foo', 'bar', 'hoge'];

キーワード分、繰り返し処理を行います。

for(var i=0, max=searchString .length; i<max; i++){
  :
}

iimSet()でマクロに記述した変数「VAR1」に値を設定します。第1パラメータが設定先の変数名、第2パラメータが値になります。

  iimSet("VAR1", searchString[i]);

iimPlay()でマクロを実行します。パラメータに実行するマクロ名を指定します。マクロ名に拡張子は不要です。

  iimPlay("google");

上記のコードを「test.js」という名前でgoogle.iimと同じ場所に作成します。

iMacrosでJavaScriptファイルを作成するには、#Currentを選択して、「Rec」→「Save」をクリック。

「test.js」という名前で保存します。

test.jsを選択して「Manage」→「Edit Macro」を選択。

開いた画面にJavaScriptを貼り付け。

これでtest.jsを実行すれば、マクロ「google.iim」が繰り返し実行されます。

4.JavaScript変数のマクロへの反映

3項までの作業でJavaScriptとマクロの連携は完成ですが、ひとつ補足です。

JavaScriptの変数の値をマクロ側に反映させるには、JavaScriptでiimPlay()を実行する前に、

iimSet("変数名", 値);

を実行します。

マクロ側でこの変数を受け取るには、

{{!変数名}}

とします。

変数名には「VAR0」~「VAR9」が使えるようです。

なおiimPlay()でマクロを起動すると、前回のiimPlay()前のiimSet()で設定した値はクリアされるようなので、同じ値を繰り返し利用する場合でも再設定が必要になります。

関連記事
zenback
人気エントリー
トラックバックURL


コメントする
greeting

*必須

*必須(非表示)


ご質問のコメントの回答については、内容あるいは多忙の場合、1週間以上かかる場合があります。また、すべてのご質問にはお答えできない可能性があります。予めご了承ください。

太字イタリックアンダーラインハイパーリンク引用
[サインインしない場合はここにCAPTCHAを表示します]

コメント投稿後にScript Errorや500エラーが表示された場合は、すぐに再送信せず、ブラウザの「戻る」ボタンで一旦エントリーのページに戻り(プレビュー画面で投稿した場合は、投稿内容をマウスコピーしてからエントリーのページに戻り)、ブラウザをリロードして投稿コメントが反映されていることを確認してください。

コメント欄に(X)HTMLタグやMTタグを記述される場合、「<」は「&lt;」、「>」は「&gt;」と入力してください。例えば「<$MTBlogURL$>」は「&lt;$MTBlogURL$&gt;」となります(全て半角文字)