如何对比liste01与liste02列表,在COsheet末尾插入指定行?
需求说明
- 对比两个列表:
liste01(提取自工作表「0_LISTE PROJETS」的第2列,从第2行开始)和liste02(提取自工作表「1_CONCEPTION 2D/3D」的第1列,从第2行开始) - 若
liste02中的元素不在liste01内,为每个符合条件的元素在「1_CONCEPTION 2D/3D」工作表的最后一行之后插入5行
修正后的完整代码
function CONCEPTION_004() { const ss = SpreadsheetApp.getActiveSpreadsheet(); const PROsheet = ss.getSheetByName("0_LISTE PROJETS"); const COsheet = ss.getSheetByName("1_CONCEPTION 2D/3D"); // 提取数据并生成目标列表 const valuePRO = PROsheet.getRange(2, 1, PROsheet.getLastRow() - 1, 3).getValues(); const liste01 = valuePRO.map(row => row[1]); // 从PROsheet第2列提取数据 const valueCO = COsheet.getRange(2, 1, COsheet.getLastRow() - 1, 1).getValues(); const liste02 = valueCO.map(row => row[0]); // 从COsheet第1列提取数据 // 转换为Set优化查找效率 const proElementSet = new Set(liste01); // 筛选出liste02中不在liste01里的元素 const missingElements = liste02.filter(element => !proElementSet.has(element)); // 批量插入行 if (missingElements.length > 0) { const lastRow = COsheet.getLastRow(); const totalInsertRows = missingElements.length * 5; COsheet.insertRowsAfter(lastRow, totalInsertRows); // 若需给插入的行填充特定内容,可在此添加逻辑 // 例如:循环填充每行的固定内容 } }
关键修正与优化
- 修复原代码
map函数无返回值的问题,正确生成liste01和liste02数组 - 使用
Set存储liste01元素,大幅提升元素存在性检查的效率 - 批量计算并插入所需行数,减少对工作表的操作次数(谷歌Apps Script中工作表操作耗时,批量处理更高效)
内容的提问来源于stack exchange,提问作者antho2B
相关产品推荐
相关产品推荐

