Google Sheets:如何基于单元格状态自动下移行并填充信息
Google Sheets 日志登记表自动配置教程
- 打开你的Google表格,点击顶部菜单栏的「扩展程序」→「Apps 脚本」,进入脚本编辑界面
- 删除编辑器里默认的所有代码,粘贴下面这段脚本:
function onEdit(e) { const sheet = e.source.getActiveSheet(); const editRow = e.range.getRow(); const logCol = 4; // 这里的4代表「Log」列是D列,你可以根据自己表格调整(A=1,B=2,C=3...) // 只处理第3行的Log列编辑 if (editRow !== 3 || e.range.getColumn() !== logCol || e.value === "") return; // 自动填充ID:取现有最大ID+1,没有则从1开始 const idCol = 1; // ID列是A列,按需调整 const maxId = sheet.getRange(idCol + ":" + idCol).getValues().flat().filter(val => !isNaN(val)).reduce((a,b) => Math.max(a,b), 0); sheet.getRange(3, idCol).setValue(maxId + 1); // 自动填充日期(当天)和时间(当前) const dateCol = 2; // 日期列是B列,按需调整 const timeCol = 3; // 时间列是C列,按需调整 sheet.getRange(3, dateCol).setValue(new Date()).setNumberFormat("yyyy-MM-dd"); sheet.getRange(3, timeCol).setValue(new Date()).setNumberFormat("HH:mm:ss"); // 将第3行下移到下方空白行,清空第3行 const targetRow = sheet.getLastRow() + 1; sheet.getRange(3, 1, 1, sheet.getLastColumn()).copyTo(sheet.getRange(targetRow, 1), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false); sheet.getRange(3, 1, 1, sheet.getLastColumn()).clearContent(); }
- 点击编辑器顶部的「保存」按钮,给项目起个名字(比如「LogAutoFill」)
- 首次运行需要授权:点击编辑器顶部的运行按钮,会弹出授权提示,点击「高级」→「转到你的项目名称(不安全)」,然后完成授权(这是Google的安全提示,自己写的脚本放心授权)
- 设置触发器:点击编辑器左侧的「触发器」图标(闹钟样式),点击「添加触发器」:
- 选择要运行的函数:
onEdit - 选择部署来源:「从电子表格」
- 选择事件类型:「编辑时」
- 点击保存即可
- 选择要运行的函数:
注意:脚本里的列号(比如logCol=4、idCol=1这些)要和你自己的表格对应,比如如果「Log」列是C列,就把logCol改成3,以此类推。
内容的提问来源于stack exchange,提问作者gman
相关产品推荐
相关产品推荐

