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):
- 在脚本编辑器中点击左侧「触发器」图标(时钟样式)
- 点击「添加触发器」:
- 选择函数:
onFormSubmit - 选择事件来源:「从电子表格」
- 选择事件类型:「表单提交」
- 选择函数:
- 保存并完成权限授权(首次运行需允许脚本访问表格数据)
逻辑说明
- 表单提交时:若状态为"Leaving Class",自动将A列的提交时间戳复制到C列(Time Out),且该值固定不再变动
- 手动编辑时:若将H列改为"Returning to Class",自动将当前时间写入E列(Time In),且仅写入一次(避免重复编辑覆盖)
- 空值检查确保不会覆盖已存在的时间记录,即使状态被反复修改
内容的提问来源于stack exchange,提问作者Bill Pratt
相关产品推荐
相关产品推荐

