Google Sheets下拉按钮脚本需求:选中Submitted时自动复制行至另一工作表
Google Sheets脚本:下拉切换为"submitted"时自动复制行到Sheet2
实现步骤
- 打开目标Google表格,点击顶部菜单的「扩展程序」>「Apps脚本」
- 删除编辑器里的默认代码,粘贴下方完整脚本
- 点击编辑器顶部的「保存」按钮,给脚本命名(例如
SubmitRowCopier) - 首次运行需授权:点击「运行」,按提示完成权限验证(属于正常的Google脚本权限,放心授权)
完整脚本代码
function onEdit(e) { // 定义目标工作表 const sourceSheet = e.source.getSheetByName("Sheet1"); const targetSheet = e.source.getSheetByName("Sheet2"); // 判断触发编辑的是否是Sheet1,且目标列是下拉列(这里默认是A列,根据你的实际列修改数字:B=2, C=3...) if (!sourceSheet || e.range.getSheet() !== sourceSheet || e.range.getColumn() !== 1) return; // 获取当前单元格的值 const status = e.value; // 仅当状态切换为"submitted"时执行复制 if (status === "submitted") { // 获取当前行的所有数据 const rowData = sourceSheet.getRange(e.range.getRow(), 1, 1, sourceSheet.getLastColumn()).getValues()[0]; // 将数据追加到Sheet2的最后一行 targetSheet.appendRow(rowData); // 可选:如果需要标记已复制的行(比如把Sheet1的该行状态标为已复制,避免重复触发) // sourceSheet.getRange(e.range.getRow(), e.range.getColumn()).setValue("copied"); } }
关键说明与优化
- 修改下拉列位置:如果你的下拉菜单不在A列,把脚本里的
e.range.getColumn() !== 1中的1改为对应列的数字(比如B列填2) - 避免重复复制:如果担心同一行多次切换到"submitted"导致重复复制,可以取消脚本里最后一行的注释,将Sheet1中该行的下拉值改为
copied(需要先在下拉选项里添加copied,或者根据需求调整) - 兼容表单/抽屉录入:
onEdit触发器会响应所有单元格编辑操作,包括表单提交、抽屉按钮触发的内容修改,无需额外配置
内容的提问来源于stack exchange,提问作者Angela
相关产品推荐
相关产品推荐

