Google Sheets项目管理脚本调整:将完成任务移至Complete工作表顶部
修改Google Sheets脚本:将完成任务移至工作表顶部
要实现最新完成的任务排在「Complete」工作表顶部,不能直接替换getLastRow()为getFirstRow()(会覆盖表头且无法实现插入逻辑),正确的做法是在表头下方插入新行,再将完成任务移至该位置。以下是修改后的脚本:
function onEdit(e) { const src = e.source.getActiveSheet(); const r = e.range; // 仅处理Tasks表第7列(复选框列)且非表头行的编辑 if (src.getName() !== "Tasks" || r.columnStart !== 7 || r.rowStart === 1) return; const dest = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Complete"); // 在Complete表的表头下方(第2行)插入空行 dest.insertRowBefore(2); // 将完成的任务行移动到刚插入的空行位置 src.getRange(r.rowStart, 1, 1, 7).moveTo(dest.getRange(2, 1, 1, 7)); // 删除Tasks表中已完成的行 src.deleteRow(r.rowStart); }
关键修改说明
- 新增
dest.insertRowBefore(2):在「Complete」表的第2行(默认第1行为表头)插入空行,既避免覆盖表头,又能让新任务排在所有已完成任务的最前面 - 修改
moveTo的目标位置为dest.getRange(2, 1, 1, 7):直接将完成任务移至刚插入的空行,实现最新完成任务置顶的需求
内容的提问来源于stack exchange,提问作者Danny Nguyen
相关产品推荐
相关产品推荐

