【问题标题】:Insert time stamp and user name (or email) on google sheets在谷歌表格上插入时间戳和用户名(或电子邮件)
【发布时间】:2021-09-28 17:19:05
【问题描述】:

我正在寻找脚本,它将在另一张表中创建审核日志。在这个日志中应该是:

1)时间戳 2) 编辑单元格的用户 3)编辑单元格的值

我尝试了很多教程,但我在这方面真的很陌生,几乎没有迷失。

【问题讨论】:

  • 分享您的研究对每个人都有帮助。告诉我们您尝试了什么以及为什么它不能满足您的需求。这表明您已经花时间尝试帮助自己,它使我们免于重复明显的答案,最重要的是它可以帮助您获得更具体和相关的答案!另见:How to Ask

标签: google-sheets audit-logging


【解决方案1】:

此脚本将记录工作表“记录”中的所有活动

function onEdit(e) { 
  var email = Session.getEffectiveUser().getEmail();
  var timeZone = Session.getScriptTimeZone();
  var key = Session.getTemporaryActiveUserKey();
  var sName = e.source.getActiveSheet().getSheetName();  
  if(sName !== "Logging") {
    var value;
    var mA1 = e.range.getA1Notation().split(":")[0];       
    if(typeof(e.value) == 'string') {
      var aCell = e.source.getRange(mA1);
      value = aCell.getValue();
      var form = "'" + aCell.getFormula();
    } else {
      value = e.value;      
    }
    var data = [sName, mA1, timeZone, email, key, value, form];
    e.source.getSheetByName("Logging").appendRow(data);
  }
}

【讨论】:

  • 它工作得很好。是否可以将时区更改为实际日期和时间?比它更完美。
  • 当然,用 var timezone 代替: var datetime = Utilities.formatDate(new Date(), "GMT+0100", "dd.MM.yyyy HH:mm:ss");
  • 而不是e.source.getActiveSheet(),我总是使用e.range.getSheet()。我觉得它更可靠(但可能也一样好)。
  • @Tomasco 如果这对你有用,请确保accept the answer!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-02-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-07
相关资源
最近更新 更多