如何用Google Apps Script遍历Google Sheets行、更新数组并在另一工作表展示结果?
Google Apps Script 实现筛选并跨工作表更新数据
完整可运行代码
function filterAndUpdateSheet() { // 可配置参数,根据你的需求修改 const SOURCE_SHEET_NAME = "Database"; const TARGET_SHEET_NAME = "目标工作表"; // 替换为你的目标工作表名称 const MATCH_STRING = "你要匹配的特定字符串"; // 替换为目标匹配字符串 // 需要提取的列(电子表格列号从1开始,比如第23列、第31列) const EXTRACT_COLUMNS = [23, 31]; // 获取表格实例与工作表 const activeSS = SpreadsheetApp.getActiveSpreadsheet(); const sourceSheet = activeSS.getSheetByName(SOURCE_SHEET_NAME); const targetSheet = activeSS.getSheetByName(TARGET_SHEET_NAME); // 检查工作表是否存在 if (!sourceSheet || !targetSheet) { Logger.log("错误:找不到指定的工作表,请检查名称拼写"); return; } // 批量获取源表数据(从第2行开始,假设第1行是表头) const lastRow = sourceSheet.getLastRow(); const allData = sourceSheet.getRange(2, 1, lastRow - 1, sourceSheet.getLastColumn()).getValues(); // 筛选并提取目标数据 const resultData = []; allData.forEach(row => { // 第36列对应数组索引35(数组从0开始计数) const column36Content = row[35]; // 判断是否包含目标字符串(如需忽略大小写,可添加toLowerCase()) if (column36Content && column36Content.includes(MATCH_STRING)) { // 提取指定列的数据,转换为数组索引(列号-1) const extractedRow = EXTRACT_COLUMNS.map(col => row[col - 1]); resultData.push(extractedRow); } }); // 将结果写入目标工作表 if (resultData.length > 0) { // 清空目标表旧数据(保留第1行表头) targetSheet.getRange(2, 1, targetSheet.getLastRow() - 1, targetSheet.getLastColumn()).clearContent(); // 批量写入新数据 targetSheet.getRange(2, 1, resultData.length, resultData[0].length).setValues(resultData); Logger.log(`完成更新:共写入 ${resultData.length} 条匹配数据`); } else { Logger.log("提示:未找到符合条件的数据"); } }
代码说明
- 参数配置:把所有需要自定义的内容放在代码顶部,方便快速修改工作表名称、匹配字符串和提取列。
- 高效数据读写:一次性获取源表所有数据,避免循环中反复调用
getRange(Google Apps Script性能优化核心原则),最后批量写入目标表,大幅提升运行效率。 - 列索引转换:电子表格列号从1开始,而数组索引从0开始,所以提取列时需要用
列号-1转换。 - 匹配逻辑:使用
includes()判断第36列是否包含目标字符串,如需精确匹配可替换为===,如需忽略大小写可修改为:if (column36Content && column36Content.toLowerCase().includes(MATCH_STRING.toLowerCase())) - 数据更新:先清空目标表的旧数据(保留表头),再写入筛选后的结果,避免数据重叠。
对当前代码的补充说明
你当前的代码仅获取了第2行第36列的单个单元格值,没有实现遍历所有行、筛选匹配数据和跨表写入的逻辑。上面的代码完整实现了你需求的所有步骤,同时兼顾了脚本运行性能。
内容的提问来源于stack exchange,提问作者Francesco Russo
相关产品推荐
相关产品推荐

