2015-10-17 80 views
0

我有一個.iim iMacros的文件從網站中提取文本,它看起來像這樣:使用SET VAR1 EVAL在JavaScript的iMacros

SET !DATASOURCE listofurls.csv 
SET !DATASOURCE_LINE {{CSV}} 
URL GOTO={{!COL1}} 
WAIT SECONDS=1 
TAG POS=1 TYPE=PRE ATTR=TXT:* EXTRACT=TXT 
SET !VAR1 EVAL("var a=\"{{!EXTRACT}}\"; var b=a.indexOf(\"total\"); var c=parseFloat(a.substring((b+9),(b+9+3))); c") 
SET !EXTRACT NULL 
SET !EXTRACT {{!VAR1}} 
SAVEAS TYPE=EXTRACT FOLDER=* FILE=result.csv 

它運行在播放(循環)模式好,但需自動作爲循環運行,自動從shell腳本啓動它。作爲一個正常的.iim文件不能被自動爲環路我試圖將其轉換爲JavaScript的的iMacros:

var accounts = 10; 
for(i = 1; i <= accounts; i++){ 

iimDisplay("Current loop: "+ i); 

var extract; 
extract = "CODE:"; 
extract += "SET !DATASOURCE followersapi.csv" + "\n"; 
extract += "SET !DATASOURCE_LINE {{CSV}}" + "\n"; 
extract += "URL GOTO={{!COL1}}" + "\n"; 
extract += "WAIT SECONDS=2" + "\n"; 
extract += "TAG POS=1 TYPE=PRE ATTR=TXT:* EXTRACT=TXT" + "\n"; 
extract += "SET !VAR1 EVAL("var a=\"{{!EXTRACT}}\"; var b=a.indexOf(\"total\"); var c=parseFloat(a.substring((b+9),(b+9+3))); c")" + "\n"; 
extract += "SET !EXTRACT NULL" + "\n"; 
extract += "SET !EXTRACT {{!VAR1}}" + "\n"; 
extract += "SAVEAS TYPE=EXTRACT FOLDER=* FILE=result.csv" + "\n"; 

iimSet("CSV", i); 
iimPlay(extract); 

} 

我得到這個錯誤:

SyntaxError: missing ; before statement, line 23 (Error code: -991)

經過一番研究修改這條線就從這個:

SET !VAR1 EVAL("var a=\"{{!EXTRACT}}\"; var b=a.indexOf(\"total\"); var c=parseFloat(a.substring((b+9),(b+9+3))); c") 

這樣:

SET !VAR1 EVAL(\"var a=\'{{!EXTRACT}}\'; var b=a.indexOf(\"total\"); var c=parseFloat(a.substring((b+9),(b+9+3))); c\) 

然後我得到這個錯誤:

wrong format of SET command, line 9 (Error code: 910)

我如何能得到這個工作任何想法?我也嘗試從.js文件啓動.iim文件,並從那裏循環,但是!LOOP始終爲1,它總是讀取csv的第一行。所以它非常沒用。

非常感謝!

回答

1

嘗試這種方式:

extract += 'SET !VAR1 EVAL("var a=\'{{!EXTRACT}}\'; var b=a.indexOf(\'total\'); var c=parseFloat(a.substring((b+9),(b+9+3))); c")' + "\n"; 
+0

Woho!難以置信!你只是改變了所有的「爲了......」爲什麼這樣?它是iMacros上的錯誤還是應該這樣寫? – Ritenour

+0

這就是使用'iMacros'+ JavaScript作爲字符串表示法的規則,你也可以這樣寫: (提取+ =「SET!VAR1 EVAL(\」var a ='{{EXTRACT}}'; var b = a.indexOf('total'); var c = parseFloat(a.substring((b + 9) ,(b + 9 + 3))); c \「)」+「\ n」;'。 – Shugar