Google Sheets勾选复选框移动行至目标工作表代码故障排查
解决Google Sheets复选框触发行移动的脚本问题
问题根源
你的脚本没生效的核心原因是复选框的e.value判断错误:Google Sheets中勾选复选框时,e.value返回的是布尔值TRUE,而非你代码里写的字符串"Done"。这个错误条件导致后续的range读取、写入操作完全没触发。
修正后的完整代码
function onEdit(e) { const checkboxColumn = 1; // 复选框所在的A列 const sourceSheet = e.range.getSheet(); // 仅在BASE LIST的A列复选框被勾选时执行逻辑 if (sourceSheet.getName() === "BASE LIST" && e.range.columnStart === checkboxColumn && e.value === "TRUE") { // 获取当前勾选行的所有数据 const rowValues = sourceSheet.getRange(e.range.rowStart, 1, 1, sourceSheet.getLastColumn()).getValues(); // 定位目标工作表 const destSheet = e.source.getSheetByName("DESTINATION LIST"); // 将数据插入目标表的最后一行下方 destSheet.getRange(destSheet.getLastRow() + 1, 1, rowValues.length, rowValues[0].length).setValues(rowValues); // 删除源表中的该行 sourceSheet.deleteRow(e.range.rowStart); } }
补充提示
- 如果需要支持取消复选框时把行移回原表,可以添加
else if (e.value === "FALSE")的分支逻辑 - 建议给两张表的表头设置保护,防止操作时误删表头
- 若后续数据量变大,可改用
getDataRange()配合数组操作来提升性能,当前小数据量场景下现有逻辑足够用
内容的提问来源于stack exchange,提问作者DimitryART
相关产品推荐
相关产品推荐

