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

Google表格脚本需求:实现离校/返校固定时间戳记录

Google 表单离校登记:固定时间戳实现方案

由于公式会随表格重计算自动更新,无法保留固定值,因此需要结合 Google Apps Script 的两个触发器来实现需求:一个处理表单提交事件,另一个处理手动编辑事件。

步骤1:确认列配置

确保你的响应表格对应列如下(可根据实际调整,后续脚本中同步修改列索引即可):

  • A列:表单自动生成的提交时间戳
  • H列:状态("Leaving Class" / "Returning to Class")
  • C列:Time Out(固定离校时间)
  • E列:Time In(固定返校时间)

步骤2:编写脚本

打开表格的脚本编辑器(扩展 > Apps Script),粘贴以下代码:

// 处理表单提交事件
function onFormSubmit(e) {
  const sheet = e.range.getSheet();
  const row = e.range.getRow();
  const status = sheet.getRange(row, 8).getValue(); // H列索引为8
  
  // 若提交状态为离校且Time Out为空,写入提交时间戳
  if (status === "Leaving Class" && sheet.getRange(row, 3).getValue() === "") {
    const submitTime = sheet.getRange(row, 1).getValue();
    sheet.getRange(row, 3).setValue(submitTime);
  }
}

// 处理手动编辑事件
function onEdit(e) {
  const range = e.range;
  const sheet = range.getSheet();
  const row = range.getRow();
  const col = range.getColumn();
  
  // 仅当编辑H列时触发
  if (col !== 8) return;
  
  const status = range.getValue();
  
  // 若状态改为返校且Time In为空,写入当前编辑时间
  if (status === "Returning to Class" && sheet.getRange(row, 5).getValue() === "") {
    sheet.getRange(row, 5).setValue(new Date());
  }
}

步骤3:配置可安装触发器

onFormSubmit 是需要手动配置的可安装触发器(表单提交不会触发默认的onEdit):

  1. 在脚本编辑器中点击左侧「触发器」图标(时钟样式)
  2. 点击「添加触发器」:
    • 选择函数:onFormSubmit
    • 选择事件来源:「从电子表格」
    • 选择事件类型:「表单提交」
  3. 保存并完成权限授权(首次运行需允许脚本访问表格数据)

逻辑说明

  • 表单提交时:若状态为"Leaving Class",自动将A列的提交时间戳复制到C列(Time Out),且该值固定不再变动
  • 手动编辑时:若将H列改为"Returning to Class",自动将当前时间写入E列(Time In),且仅写入一次(避免重复编辑覆盖)
  • 空值检查确保不会覆盖已存在的时间记录,即使状态被反复修改

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 11:44:54