我在Firefox中遇到iMacros的问题。
这是我的宏" test.js":
var macros;
var macrosrun;
var s_n = "\n";
var getExtract;
var i;
for (i=1; i<=3; i++) {
macros = "CODE:";
macros += "SET !ERRORIGNORE YES"+s_n;
macros += "SET !EXTRACT_TEST_POPUP NO"+s_n;
macros += "SET !DATASOURCE test\.csv"+s_n;
macros += "SET !DATASOURCE_LINE "+i+s_n;
macros += "SET !VAR1 {{!COL8}}"+s_n;
macros += "ADD !EXTRACT {{!VAR1}}"+s_n;
getExtract = iimGetExtract(1);
iimDisplay(getExtract);
if (getExtract == 1) {
macros += "URL GOTO={{!COL5}}"+s_n;
} else if (getExtract == 2) {
macros += "URL GOTO={{!COL6}}"+s_n;
} else if (getExtract == 3) {
macros += "URL GOTO={{!COL7}}"+s_n;
}
macros += "WAIT SECONDS=1"+s_n;
macrosrun = iimPlay(macros);
}
这是&#34; test.csv&#34;
1,"test","test",12345,"http://twitter.com","http://facebook.com","http://google.com",1,"Test 1"
2,"test","test",12345,"http://twitter.com","http://facebook.com","http://google.com",2,"Test 2"
3,"test","test",12345,"http://twitter.com","http://facebook.com","http://google.com",3,"Test 3"
我认为,如果&#34; 1&#34;在第8列的第一个字符串中,宏&#39; ll转到&#34; twitter.com&#34; 如果&#34; 2&#34; - &#34; facebook.com&#34;,如果&#34; 3&#34; - &#34; google.com&#34;
但是在真正的宏中运行3 - 1 - 2 ...而不是1 - 2 - 3 ...为什么?)
有人能帮助我吗?
答案 0 :(得分:0)
如果在调用getLastExtract之前调用iimPlay,则会从数据源中提取正确的值。
以下是您的示例并进行了一些修改:
var macros;
var macrosrun;
var s_n = "\n";
var getExtract;
var i;
var col5, col6, col7;
for (i=1; i<=3; i++) {
macros = "CODE:";
macros += "SET !ERRORIGNORE YES"+s_n;
macros += "SET !EXTRACT_TEST_POPUP NO"+s_n;
macros += "SET !DATASOURCE test\.csv"+s_n;
macros += "SET !DATASOURCE_LINE " + i + s_n;
macros += "SET !VAR1 {{!COL8}}"+s_n;
macros += "ADD !EXTRACT {{!VAR1}}"+s_n;
macros += "SET !VAR1 {{!COL5}}"+s_n;
macros += "ADD !EXTRACT {{!VAR1}}"+s_n;
macros += "SET !VAR1 {{!COL6}}"+s_n;
macros += "ADD !EXTRACT {{!VAR1}}"+s_n;
macros += "SET !VAR1 {{!COL7}}"+s_n;
macros += "ADD !EXTRACT {{!VAR1}}"+s_n;
// iimPlay added before calling iimGetExtract
macrosrun = iimPlay(macros);
// pull all extracted values and split the string
var extracted = iimGetExtract().split(/\[EXTRACT\]/);
getExtract = parseInt(extracted[0]);
col5 = extracted[1];
col6 = extracted[2];
col7 = extracted[3];
macros = "CODE:";
if (getExtract === 1) {
macros += "URL GOTO=" + col5 +s_n;
} else if (getExtract === 2) {
macros += "URL GOTO=" + col6 +s_n;
} else if (getExtract === 3) {
macros += "URL GOTO=" + col7 +s_n;
}
macros += "WAIT SECONDS=1"+s_n;
macrosrun = iimPlay(macros);
}