You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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()即可

使用步骤

  1. 打开你的Dismissal电子表格
  2. 点击顶部菜单栏的「扩展程序」→「Apps 脚本」
  3. 将默认代码删除,粘贴上面的脚本
  4. 点击保存,命名项目(比如「StudentDismissal」)
  5. 关闭脚本编辑器,刷新电子表格,顶部会出现「签出操作」菜单
  6. 在Student Names工作表选中要签出的学生单元格,点击「签出操作」→「移动选中学生到签出表」即可

注意事项

  • 首次运行会要求授权,按照提示完成授权即可
  • 如果选中的是多个不连续单元格,脚本会按选中顺序依次复制到签出表的A列连续行中
  • 若需要调整目标列(比如不是A列),修改targetSheet.getRange(targetLastRow, 1, ...)中的第二个参数(1代表A列,2代表B列,以此类推)

内容的提问来源于stack exchange,提问作者TDA

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 04:05:12