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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 23:01:10