iMacros循环运行时如何向CSV对应行的第二列写入成功执行标记
iMacros向CSV对应行写入执行标记的实现方案
iMacros原生的.iim脚本不支持直接修改现有CSV文件的指定单元格内容,可通过以下两种方案实现需求:
方案1:使用iMacros JavaScript脚本(推荐)
将原逻辑封装为.js后缀的脚本运行,通过JS读写CSV文件完成标记写入,示例代码如下:
// 配置参数 const csvPath = "worksheet1.csv"; const totalLoop = 500; // 替换为你的实际总循环次数 // 读取CSV文件为二维数组 function readCsv(path) { let fs = imns.FIO.openNode(path); let content = imns.FIO.readTextFile(fs); return content.split(/\r?\n/).map(line => line.split(",")); } // 将修改后的数组内容写回CSV function writeCsv(path, data) { let content = data.map(line => line.join(",")).join("\n"); let fs = imns.FIO.openNode(path); imns.FIO.writeTextFile(fs, content); } // 循环执行业务逻辑 for (let i = 1; i <= totalLoop; i++) { // 注入变量调用原iMacros操作逻辑 iimSet("loopLine", i); iimPlayCode(` SET !DATASOURCE ${csvPath} SET !DATASOURCE_LINE {{loopLine}} TAG POS=1 TYPE=INPUT:TEXT FORM=ID:keywrd ATTR=ID:keyword CONTENT={{!COL1}} /* 此处补充你原脚本的其他操作代码 */ `); // 执行成功后修改对应行第二列的标记 let csvData = readCsv(csvPath); if (csvData[i-1]) { // 数组下标从0开始,对应CSV第i行 csvData[i-1][1] = "1"; // 第二列写入1作为成功标记 } writeCsv(csvPath, csvData); }
注意:该方案仅支持iMacros桌面浏览器或有权限的旧版本iMacros for Firefox,受浏览器插件沙箱限制无法读写本地文件时可使用方案2。
方案2:纯iim脚本变通实现
无需编写JS代码,每次循环完成后将成功的行号追加到单独的日志文件,后续和原CSV核对即可:
在你原有的.iim脚本末尾添加以下代码:
SET !EXTRACT {{!LOOP}} SAVEAS TYPE=EXTRACT FOLDER=* FILE=success_log.csv
运行后会在iMacros默认数据目录生成success_log.csv,文件内记录了所有执行成功的循环序号,和原worksheet1.csv的行号一一对应即可快速确认已完成的条目。
内容的提问来源于stack exchange,提问作者Razvan Botezatu
相关产品推荐
相关产品推荐

