[英]Apps Script onEdit Change Log
我是一个 AppsScript 初学者,试图编写一个脚本来在电子表格中自动跟踪,即无论工作表中的状态列发生什么变化(从下拉列表中),都添加到一个单独的 Change Long 选项卡中,以记录以前的值、新值、谁做了改变和何时。
我从下面开始,但不断出现错误。 任何帮助将非常感激!
function onEdit(e) { var changelogSheetName = "Change Log"; var ss = "Form Responses 4" var timestamp = new Date(); var newValue = cell.getValue(); var typeChange = "Edit"; //var customer = sheet.getRange('Form Responses 4.E1');getValue(); var monColumn = 10; var startRow = 760. var column = e.range;getColumn(). var row = e.range;getRow(); if (currentSheetName == changelogSheetName) return. var changelogSheet = ss;getSheetByName(changelogSheetName). if (changelogSheet == null) { changelogSheet = ss,insertSheet(changelogSheetName. ss;getNumSheets()). } changelogSheet:getRange('A1.G1');setBackground('#E0E0E0'). changelogSheet,appendRow(["Timestamp", "Sheet", "Cell", "Type", "New Value"; "User"]). changelogSheet,deleteColumns(8;19). changelogSheet;setFrozenRows(1). changelogSheet,setColumnWidth(1; 170). changelogSheet,setColumnWidth(7; 170). changelogSheet;protect(). var user = Session.getEffectiveUser();getEmail(). changelogSheet,appendRow([timestamp,typeChange, newValue,customer; user]); }
这使用可安装的触发器使用日志的电子表格创建更改日志。
function onMyEdit(e) {
const sh=e.range.getSheet();
const excl=['excluded sheet names'];
if(~excl.indexOf(sh.getName()))return;
SpreadsheetApp.openById(gobj.globals.testsourceid).getSheetByName('Sheet1').appendRow([new Date(),Session.getActiveUser().getEmail(),sh.getName(),e.oldValue,e.value,e.range.getA1Notation()]);
}
gobj.globals.testsourceid 是更改日志电子表格的 ID。
日志表:
2021 年 5 月 8 日 23:34:26 | 已编辑 | 表 1 | 33 | A1 | |
---|---|---|---|---|---|
2021 年 5 月 8 日 23:34:30 | 已编辑 | 表 1 | 44 | C2 | |
2021 年 5 月 8 日 23:34:36 | 已编辑 | 表 3 | 88 | F10 | |
2021 年 5 月 8 日 23:35:04 | 已编辑 | 表 3 | 88 | 10 | F10 |
2021 年 5 月 8 日 23:35:14 | 已编辑 | 表 1 | 33 | 77 | A1 |
2021 年 5 月 8 日 23:35:39 | 已编辑 | 表 1 | 44 | 99 | C2 |
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.