请求Google Sheets自动脚本:F列设为'done'时将整行移至指定行
Google Sheets 自动移动已标记行脚本
以下是满足你需求的自动执行脚本,通过onEdit简单触发器实现,无需手动激活:
function onEdit(e) { const sheet = e.source.getActiveSheet(); const range = e.range; // 仅响应F列(第6列)单元格变更,且值为'done'(不区分大小写) if (range.getColumn() !== 6 || range.getValue().toLowerCase() !== 'done') return; const targetRow = 40; // 设定要移动到该行之后 const rowToMove = range.getRow(); // 若目标行已在指定行之后,无需处理 if (rowToMove > targetRow) return; // 获取待移动行的完整数据 const rowContent = sheet.getRange(rowToMove, 1, 1, sheet.getLastColumn()).getValues()[0]; // 删除原行 sheet.deleteRow(rowToMove); // 在指定行下方插入新行并写入数据 sheet.insertRowAfter(targetRow); sheet.getRange(targetRow + 1, 1, 1, rowContent.length).setValues([rowContent]); }
脚本设置步骤:
- 打开你的Google Sheets表格,点击顶部菜单栏的
扩展→Apps 脚本 - 删除编辑器里的默认代码,粘贴上面的脚本
- 点击编辑器顶部的保存按钮,给项目命名(比如"DoneRowAutoMover")
- 关闭脚本编辑器,回到表格即可生效
注意事项:
- 该脚本属于简单触发器,编辑自己的表格时无需额外授权就能自动运行
- 可修改
targetRow变量的值,设置你需要的目标行号(比如把40改成其他数字) - 脚本不区分'done'的大小写,输入'Done'/'DONE'也会触发移动
- 若待移动的行已经在指定目标行之后,脚本会自动跳过,避免无效操作
内容的提问来源于stack exchange,提问作者365 KiM CUONG LAND
相关产品推荐
相关产品推荐

