3

iMacro スクリプトの 2 つの部分についてヘルプを探しています...

Part1 - Variable

抽出する必要があるページにアクセスするために、ページの次の行をクリックしています。

最初のリンク

TAG POS=**8** TYPE=A FORM=NAME:xxyy ATTR=HREF:https://aaa.aaaa.com/en/administration/xxxx.jsp?reqID=h*

2 番目のリンク

TAG POS=**9** TYPE=A FORM=NAME:xxyy ATTR=HREF:https://aaa.aaaa.com/en/administration/xxxx.jsp?reqID=h*

タグ pos は変数です。ループを実行しているときに、マクロが画面上の次の値を選択する (つまり、8、9、10 を選択する) ようにするにはどうすればよいですか? 一部の画面には、クリックするリンクが 100 以上あります。

パート 2 - CSV ファイルを保存する

ファイルに saveas 行があります。しかし、作成されるファイルが 1 つだけになるようにするにはcsvどうすればよいでしょうか (マクロを 50 回実行しても)。また、CSV新しい実行がそれぞれ別の行で開始されるように iMacros からファイルをフォーマットする方法はありますか (現在、すべてのデータは多くの列にわたって行 1 に抽出されます)。

前もって感謝します、

アダム

4

1 に答える 1

3

これはあなたが求めたことをします。マクロをループし、そのたびにマクロに新しい位置番号を設定します。

1)

    var macro;

    macro ="CODE:";
    macro +="TAG POS={{number}} TYPE=A FORM=NAME:xxyy ATTR=HREF:https://aaa.aaaa.com/en/administration/xxxx.jsp?reqID=h*"+"\n";


for(var i=1;i<100;i++)
{

iimSet("number",i)
iimPlay(macro)

}

パート 2 のソリューションには、JavaScript スクリプトが必要です。最初の部分はマクロを宣言し、2 番目の部分はマクロを開始し、3 番目の部分は抽出されたテキストをファイルに保存する関数です。実行するたびに、新しい行に保存されます。

2)

var macroExtractSomething;

macroExtractSomething ="CODE:";
macroExtractSomething +="TAG POS=1 TYPE=DIV ATTR=CLASS:some_class_of_some_div EXTRACT=TXT"+"\n";



iimPlay(macroExtractSomething)
var extracted_text=iimGetLastExtract();

WriteFile("C:\\some_folder\\some_file.csv",extracted)




  //This function writes string into a file. It will also create file on that location
    function WriteFile(path,string)
    {

    //import FileUtils.jsm
    Components.utils.import("resource://gre/modules/FileUtils.jsm");
    //declare file
    var file = new FileUtils.File(path);

    //declare file path
    file.initWithPath(path);

    //if it exists move on if not create it
    if (!file.exists())
    {
    file.create(file.NORMAL_FILE_TYPE, 0666);
    }

    var charset = 'EUC-JP';
    var fileStream = Components.classes['@mozilla.org/network/file-output-stream;1']
    .createInstance(Components.interfaces.nsIFileOutputStream);
    fileStream.init(file, 18, 0x200, false);
    var converterStream = Components
    .classes['@mozilla.org/intl/converter-output-stream;1']
    .createInstance(Components.interfaces.nsIConverterOutputStream);
    converterStream.init(fileStream, charset, string.length,
    Components.interfaces.nsIConverterInputStream.DEFAULT_REPLACEMENT_CHARACTER);

    //write file to location
    converterStream.writeString("\r\n"+string);
    converterStream.close();
    fileStream.close();


    }
于 2013-02-04T00:20:45.910 に答える