Google Apps Script需求:复制选中单元格至指定工作表并清除源内容
Google Apps Script 实现学生签出功能
以下是满足你需求的完整脚本,直接复制到脚本编辑器即可使用:
function moveToCheckOut() { // 获取当前电子表格 const ss = SpreadsheetApp.getActiveSpreadsheet(); // 获取源工作表和目标工作表 const sourceSheet = ss.getSheetByName('Student Names'); const targetSheet = ss.getSheetByName('Check Out'); // 获取用户选中的单元格范围 const selectedRange = sourceSheet.getActiveRange(); const selectedValues = selectedRange.getValues(); // 找到Check Out工作表A列的首个空行 const targetLastRow = targetSheet.getRange('A:A').getValues().filter(String).length + 1; // 将选中内容复制到目标位置 targetSheet.getRange(targetLastRow, 1, selectedValues.length, selectedValues[0].length).setValues(selectedValues); // 清除源单元格内容(如果需要删除整行可以替换为下面的注释代码) selectedRange.clearContent(); // 若要删除选中的整行,替换上面的clearContent()为: // sourceSheet.deleteRows(selectedRange.getRow(), selectedRange.getNumRows()); } // 为电子表格添加自定义菜单,方便调用 function onOpen() { const ui = SpreadsheetApp.getUi(); ui.createMenu('签出操作') .addItem('移动选中学生到签出表', 'moveToCheckOut') .addToUi(); }
关键功能说明
- 获取选中范围:
getActiveRange()获取用户当前选中的单元格/单元格区域,支持单个或多个连续单元格 - 定位目标空行:通过过滤A列非空值的长度,计算出首个空行位置,避免遗漏已有数据
- 内容复制:使用
setValues()批量写入数据,比逐个复制效率更高 - 清除源内容:默认使用
clearContent()仅清除单元格文本,保留格式;如果需要删除整行,替换为deleteRows()即可
使用步骤
- 打开你的
Dismissal电子表格 - 点击顶部菜单栏的「扩展程序」→「Apps 脚本」
- 将默认代码删除,粘贴上面的脚本
- 点击保存,命名项目(比如「StudentDismissal」)
- 关闭脚本编辑器,刷新电子表格,顶部会出现「签出操作」菜单
- 在
Student Names工作表选中要签出的学生单元格,点击「签出操作」→「移动选中学生到签出表」即可
注意事项
- 首次运行会要求授权,按照提示完成授权即可
- 如果选中的是多个不连续单元格,脚本会按选中顺序依次复制到签出表的A列连续行中
- 若需要调整目标列(比如不是A列),修改
targetSheet.getRange(targetLastRow, 1, ...)中的第二个参数(1代表A列,2代表B列,以此类推)
内容的提问来源于stack exchange,提问作者TDA
相关产品推荐
相关产品推荐

