如何为Google Sheet生成每日变更报告及出货零件跟踪日报表?
Google Sheets 每日变更报告与新增行追踪方案
一、创建Google Sheet每日变更报告
方法1:脚本自动生成每日快照
- 打开目标表格,点击「扩展程序」>「Apps Script」进入脚本编辑器。
- 替换默认代码为以下脚本(按需修改工作表名称):
function dailySnapshot() { const sourceSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("源数据"); // 替换为你的数据工作表名 let reportSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("每日报告"); if (!reportSheet) reportSheet = SpreadsheetApp.getActiveSpreadsheet().insertSheet("每日报告"); const today = new Date(); const formattedDate = Utilities.formatDate(today, Session.getScriptTimeZone(), "yyyy-MM-dd"); // 复制源数据到报告表 const sourceRange = sourceSheet.getDataRange(); sourceRange.copyTo(reportSheet.getRange(reportSheet.getLastRow() + 1, 1), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false); // 为复制内容添加日期标记 const startRow = reportSheet.getLastRow() - sourceRange.getNumRows() + 1; reportSheet.getRange(startRow, sourceRange.getNumColumns() + 1, sourceRange.getNumRows(), 1).setValue(formattedDate); } - 保存脚本后,点击左侧「触发器」图标,添加时间驱动触发器:选择
dailySnapshot函数,触发类型设为「日计时器」,设置每日执行的具体时间。
方法2:手动生成变更对比报告
- 打开表格,点击「文件」>「版本历史记录」>「查看版本历史记录」。
- 选择需要对比的两个日期版本,点击「比较」,系统会高亮显示所有单元格的变更内容,可直接截图或复制到新工作表保存为当日报告。
二、生成每日新增跟踪信息行的报表
场景1:追踪当日新增的零件行
- 在源数据工作表(如「出货零件跟踪」)添加一列「创建时间」(例如列A),在A2单元格输入公式:
(B2为零件编号所在单元格,按需调整),下拉填充公式,自动记录每行的创建时间。=IF(ISBLANK(B2),"",NOW()) - 创建「每日新增报告」工作表,编写以下脚本并设置每日触发器:
function trackNewRows() { const sourceSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("出货零件跟踪"); let reportSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("每日新增报告"); if (!reportSheet) reportSheet = SpreadsheetApp.getActiveSpreadsheet().insertSheet("每日新增报告"); const today = new Date(); const startOfDay = new Date(today.getFullYear(), today.getMonth(), today.getDate()); const data = sourceSheet.getDataRange().getValues(); // 筛选今日创建的行(第1列为创建时间) const newRows = data.filter(row => { return row[0] instanceof Date && row[0] >= startOfDay; }); // 写入报告表 if (newRows.length > 0) { const lastRow = reportSheet.getLastRow(); reportSheet.getRange(lastRow + 1, 1, newRows.length, newRows[0].length).setValues(newRows); // 添加日期标记 reportSheet.getRange(lastRow + 1, newRows[0].length + 1, newRows.length, 1).setValue(Utilities.formatDate(today, Session.getScriptTimeZone(), "yyyy-MM-dd")); } }
场景2:追踪已有行中新增的跟踪编号
- 在源表添加「上次更新时间」列(设为最后一列),添加编辑触发脚本:
function onEdit(e) { const sheet = e.range.getSheet(); if (sheet.getName() !== "出货零件跟踪") return; const updateCol = sheet.getLastColumn(); sheet.getRange(e.range.getRow(), updateCol).setValue(new Date()); } - 在「每日新增报告」工作表中用
QUERY函数实时显示今日更新的行(假设跟踪编号在C列,更新时间在Z列):
若需要精准对比跟踪编号的新增,可结合脚本维护历史跟踪编号记录表,每日对比后提取变更行。=QUERY('出货零件跟踪'!A:Z, "SELECT * WHERE Z >= DATE'"&TEXT(TODAY(), "yyyy-MM-dd")&"' AND C <> ''", 1)
内容的提问来源于stack exchange,提问作者Matt Murray
相关产品推荐
相关产品推荐

