当复选框为TRUE且A、C列非空时,将行复制至目标工作表
Google Sheets 行复制脚本实现
以下是满足你需求的完整脚本,直接复制使用即可:
function copyCheckedRows() { const ss = SpreadsheetApp.getActiveSpreadsheet(); const sourceSheet = ss.getSheetByName('Source Sheet'); const destSheet = ss.getSheetByName('Destination Sheet'); // 读取Source Sheet所有数据(默认第1行为表头) const data = sourceSheet.getDataRange().getValues(); const rowsToCopy = []; // 遍历每一行(跳过表头,从第2行开始) for (let i = 1; i < data.length; i++) { const row = data[i]; const isChecked = row[4]; // E列对应数组索引4 const colA = row[0]; const colC = row[2]; // 检查条件:复选框勾选、A列非空、C列非空 if (isChecked === true && colA !== '' && colC !== '') { rowsToCopy.push(row); } } // 把符合条件的行批量写入目标表 if (rowsToCopy.length > 0) { const nextEmptyRow = destSheet.getLastRow() + 1; destSheet.getRange(nextEmptyRow, 1, rowsToCopy.length, rowsToCopy[0].length).setValues(rowsToCopy); // 可选:复制后清空已处理的复选框,避免重复复制 for (let i = 1; i < data.length; i++) { const row = data[i]; if (row[4] === true && row[0] !== '' && row[2] !== '') { sourceSheet.getRange(i + 1, 5).setValue(false); // i+1是实际行号,5是E列的列号 } } } }
使用步骤
- 打开你的表格,点击「扩展程序」→「Apps Script」
- 删除默认代码,粘贴上面的脚本
- 保存项目(随便起个名字,比如
CopyCheckedRows) - 首次运行会弹出授权请求,按提示完成授权即可
- 若需自动触发,点击左侧「触发器」→「添加触发器」:选择函数
copyCheckedRows,事件类型选「编辑时」,这样每次修改表格都会自动检查执行
内容的提问来源于stack exchange,提问作者Redricka
相关产品推荐
相关产品推荐

