如何在Google Sheets编辑日志函数中记录编辑行首列的值?
修改Google Sheets变更日志函数,新增被编辑行第一列值记录
要实现需求只需两步操作:
- 新增
member变量,获取当前编辑单元格所在行的第一列值 - 更新日志表头和记录行,将该值纳入日志内容
关键代码说明
用以下代码定义member变量,即可实现目标功能:
var member = e.range.getSheet().getRange(e.range.getRow(), 1).getValue();
逻辑说明:通过e.range定位当前编辑单元格,获取其所在行号后,定位到该行第一列(列索引为1),最终取出对应单元格的值。
修改后的完整函数代码
function onEdit(e) { var timestamp = new Date(); var user = e.user; var cell = e.range.getA1Notation(); var oldValue = e.oldValue; var newValue = e.value; var sheetName = e.source.getActiveSheet().getName(); // 新增:获取被编辑行第一列的值 var member = e.range.getSheet().getRange(e.range.getRow(), 1).getValue(); var logSheet = e.source.getSheetByName("Edit Log"); if (logSheet == null) { logSheet = e.source.insertSheet("Edit Log"); // 更新表头,新增"第一列内容"字段(可根据实际需求修改名称) logSheet.appendRow(["Timestamp", "User", "Cell", "Old Value", "New Value", "Sheet Name", "第一列内容"]); } // 仅记录"Master Census"工作表的编辑操作 if (sheetName == "Master Census") { // 更新记录行,将member值加入日志数组 logSheet.appendRow([timestamp, user, cell, oldValue, newValue, sheetName, member]); } else { return; } }
补充说明
- 如果编辑的单元格本身就是第一列,
member会直接记录修改后的新值(因为getValue()在编辑完成后执行) - 该函数属于Google Sheets的简单触发函数,无需额外授权,只要编辑者拥有表格编辑权限即可正常运行
内容的提问来源于stack exchange,提问作者lchelp
相关产品推荐
相关产品推荐

