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

基于Google Sheets的未出院患者数据转存至新工作表技术咨询

快速实现Google Sheets未出院患者每日转存功能

操作步骤(无需深入学习Apps Script)

  1. 打开你的患者监控表格,点击顶部菜单栏「扩展程序」→「Apps 脚本」,进入脚本编辑器。
  2. 删除编辑器里的默认代码,粘贴下方的脚本,根据你的表格修改开头的配置参数。
  3. 点击编辑器顶部的「保存」按钮,命名脚本(比如「患者转存工具」)。
  4. 点击「运行」按钮,首次运行会触发权限验证:按提示点击「允许」,遇到“未验证应用”提示时,选「高级」→「转到[你的脚本名称](不安全)」完成授权。
  5. (可选)设置自动运行:左侧点击「触发器」图标→「添加触发器」,选择「时间驱动」,设置每日运行时间(比如23:59)。

可直接使用的脚本

function transferUndischargedPatients() {
  // === 请根据你的表格修改以下配置 ===
  const SOURCE_SHEET_NAME = "今日患者"; // 存放当日患者的工作表名称
  const DISCHARGE_CHECKBOX_COLUMN = 8; // 出院复选框所在列(A=1,B=2,以此类推)
  const DATE_FORMAT = "yyyy-MM-dd"; // 新工作表的日期命名格式
  // === 配置结束,无需修改下方代码 ===

  const spreadSheet = SpreadsheetApp.getActiveSpreadsheet();
  const sourceSheet = spreadSheet.getSheetByName(SOURCE_SHEET_NAME);
  
  // 校验原工作表是否存在
  if (!sourceSheet) {
    throw new Error(`未找到名为「${SOURCE_SHEET_NAME}」的工作表,请检查名称是否正确`);
  }

  // 获取所有数据并筛选未出院患者
  const allRows = sourceSheet.getDataRange().getValues();
  const headerRow = allRows[0];
  // 保留表头 + 未出院的患者行(复选框未勾选对应值为false)
  const undischargedData = allRows.filter((row, idx) => {
    if (idx === 0) return true; // 保留表头
    return row[DISCHARGE_CHECKBOX_COLUMN - 1] === false;
  });

  // 创建当日新工作表
  const today = Utilities.formatDate(new Date(), Session.getScriptTimeZone(), DATE_FORMAT);
  let targetSheet = spreadSheet.getSheetByName(today);
  
  // 若已存在同名表则删除,避免重复
  if (targetSheet) {
    spreadSheet.deleteSheet(targetSheet);
  }
  targetSheet = spreadSheet.insertSheet(today);

  // 复制原工作表的列宽和表头格式
  sourceSheet.getColumns().forEach((_, colIdx) => {
    targetSheet.setColumnWidth(colIdx + 1, sourceSheet.getColumnWidth(colIdx + 1));
  });
  sourceSheet.getRange(1, 1, 1, headerRow.length).copyTo(
    targetSheet.getRange(1, 1, 1, headerRow.length),
    SpreadsheetApp.CopyPasteType.PASTE_FORMAT,
    false
  );

  // 将筛选后的数据写入新表
  if (undischargedData.length > 0) {
    targetSheet.getRange(1, 1, undischargedData.length, undischargedData[0].length).setValues(undischargedData);
  }

  // 清空原工作表的患者数据(保留表头),并重置复选框
  if (allRows.length > 1) {
    sourceSheet.getRange(2, 1, allRows.length - 1, allRows[0].length).clearContent();
    sourceSheet.getRange(2, DISCHARGE_CHECKBOX_COLUMN, allRows.length - 1).setValue(false);
  }
}

关键说明

  • 参数修改:必须修改开头的SOURCE_SHEET_NAME(你的当日患者表名)和DISCHARGE_CHECKBOX_COLUMN(复选框所在列的序号),否则脚本无法正常运行。
  • 权限验证:首次运行的授权是必要的,因为脚本需要访问你的表格数据,属于正常操作。
  • 清空原表:脚本最后会清空原表的患者数据并重置复选框,若不需要此功能,删除最后一段if (allRows.length > 1) {...}代码即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 06:49:53