请求合并两个iMacros JavaScript脚本实现循环联动执行
解决iMacros脚本合并后的嵌套循环问题
问题核心
你遇到的问题是两个脚本合并时循环变量冲突,且未正确嵌套循环逻辑——原本应该是每个链接跳转后完整执行20次用户资料访问,但因为循环变量复用、循环结构错误,导致每个链接只处理1个用户就进入下一轮。
修复后的完整脚本
// 定义处理链接的Macro var macroUrl; macroUrl = "CODE:"; macroUrl += "SET !EXTRACT_TEST_POPUP NO" + "\n"; macroUrl += "SET !ENCRYPTION NO" + "\n"; macroUrl += "SET !ERRORIGNORE YES" + "\n"; macroUrl += "'Подключаем наш файл" + "\n"; macroUrl += "SET !DATASOURCE D:\\iMacros\\Datasources\\Ok\\URLs.csv" + "\n"; macroUrl += "SET !DATASOURCE_COLUMNS 1" + "\n"; macroUrl += "'данные с нужной строки" + "\n"; macroUrl += "SET !DATASOURCE_LINE {{urlIndex}}" + "\n"; macroUrl += "URL GOTO={{!COL1}}" + "\n"; macroUrl += "WAIT SECONDS=2" + "\n"; // 定义处理用户资料的Macro var macroUser; macroUser = "CODE:"; macroUser += "FILTER TYPE=IMAGES STATUS=ON" + "\n"; macroUser += "TAG POS={{userIndex}} TYPE=A ATTR=CLASS:link__91azp<SP>photo-link__79ad9<SP>__primary__91azp* EXTRACT=HREF" + "\n"; macroUser += "'PROMPT {{!EXTRACT}}" + "\n"; macroUser += "TAB OPEN" + "\n"; macroUser += "TAB T=2" + "\n"; macroUser += "URL GOTO={{!EXTRACT}}" + "\n"; macroUser += "WAIT SECONDS=5" + "\n"; macroUser += "EVENT TYPE=KEYPRESS SELECTOR=* KEY=35" + "\n"; macroUser += "WAIT SECONDS=2" + "\n"; macroUser += "TAB CLOSE" + "\n"; // 外层循环:遍历34个链接 for(var urlIndex=1; urlIndex<=34; urlIndex++){ iimSet("urlIndex", urlIndex); iimPlay(macroUrl); // 内层循环:每个链接下遍历20个用户 for(var userIndex=1; userIndex<=20; userIndex++){ iimSet("userIndex", userIndex); iimPlay(macroUser); } }
关键改动说明
- 变量分离:将两个Macro分别命名为
macroUrl和macroUser,避免代码混淆;循环变量改用urlIndex(外层链接循环)和userIndex(内层用户循环),彻底解决原脚本中i变量冲突的问题。 - 正确嵌套循环:把用户遍历的内层循环完全放在链接循环的代码块内,确保每个链接跳转完成后,完整执行20次用户资料访问,再进入下一个链接的处理。
- 移除冗余代码:删除原Script2末尾多余的
iimPlay(macro),避免额外执行一次无效的用户访问。
内容的提问来源于stack exchange,提问作者Toha Remontov
相关产品推荐
相关产品推荐

