修改Google Apps Script:清除L列非空的指定行内容
修改后的Google Sheets脚本:清除指定行内容并设置公式
以下是整合了需求的完整脚本,新增了清除L列不为空的整行内容的逻辑,同时保留你原有脚本的功能:
function clearRanges() { const sheet = SpreadsheetApp.getActive().getSheetByName("Xin hàng"); // 新增:清除L列(第12列)不为空的整行(A-L列)内容 const startRow = 3; const endRow = 2000; const rowCount = endRow - startRow + 1; const dataRange = sheet.getRange(startRow, 1, rowCount, 12); // 覆盖A-L列 const values = dataRange.getValues(); // 收集需要清除的行号 const rowsToClear = []; for (let i = 0; i < values.length; i++) { const lCellValue = values[i][11]; // L列是第12列,数组索引从0开始为11 if (lCellValue !== "" && lCellValue !== null) { rowsToClear.push(startRow + i); // 转换为实际工作表行号 } } // 批量清除目标行的内容 if (rowsToClear.length > 0) { const rangeStrings = rowsToClear.map(row => `A${row}:L${row}`); sheet.getRangeList(rangeStrings).clear({ contentsOnly: true }); } // 原有逻辑:清除A3:L2000区域内容 const mainRange = sheet.getRangeList(['A3:L2000']); const clearOptions = { formatOnly: false, contentsOnly: true }; mainRange.clear(clearOptions); SpreadsheetApp.flush(); Utilities.sleep(10000); // 原有逻辑:设置公式 const khoxuatRange = sheet.getRangeList(['G3:G2000']); khoxuatRange.setValue('=iferror(INDEX(Mapping!$E:$E;MATCH(iferror(LEFT($A3;4)&DATEVALUE($H3)&MID($B3;3;7)&RIGHT($B3)&"TRUE";"");Mapping!$G:$G;0));"")'); const trangthaipdcRange = sheet.getRangeList(['J3:J2000']); trangthaipdcRange.setValue('=IF(I3<>"","Open","")'); }
关键说明:
- 批量处理优化:通过一次获取所有行数据,避免多次调用API,提升脚本运行效率
- 行号匹配:遍历数组时将索引转换为实际工作表行号(从3开始),确保目标行准确
- 清除规则:仅清除行的内容(保留格式),符合你"清除而非删除行"的需求
- 逻辑顺序:先处理L列非空行的清除,再执行原有A3:L2000区域的清除,若你不需要重复清除可调整顺序或移除原有清除步骤
内容的提问来源于stack exchange,提问作者Duc Pham
相关产品推荐
相关产品推荐

