繁体   English   中英

Apps 脚本 onEdit 更改日志

[英]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。

onedit 事件 object

日志表:

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM