如何将用户添加到显示谁在Google表格中编辑过行的单元格?

时间:2019-01-18 11:27:52

标签: google-apps-script google-sheets

我有一个适用于GOogle表格的脚本,该脚本几乎可以完美运行。我只需要添加一个内容: 要将登录的用户添加到单元中。 我有一个名为“ GMB说明”的工作表 当用户在第4列的任何单元格行中输入信息时,它将在同一行的第5列中显示日期和时间。没问题。 问题是我希望它也显示该单元格中的登录用户 当前(以下脚本)显示: MM / dd / yyyy-hh:mm a 我希望它显示: MM / dd / yyyy-hh:mm a-登录的用户 我知道它将使用更改该行的用户电子邮件。

摘要:如何将代码添加到以下脚本中,以显示进行该编辑的用户?

function onEdit() {
 var s = SpreadsheetApp.getActiveSheet();
 if( s.getName() == "GMB Descriptions" ) { //checks that we're on the correct sheet
   var r = s.getActiveCell();
   if( r.getColumn() == 4 ) { //checks the column
     var nextCell = r.offset(0, 1);
     if( nextCell.getValue() === '' ) //is empty?
       var time = new Date();
       time = Utilities.formatDate(time, "GMT-8", "MM/dd/yy - h:mm a");
       nextCell.setValue(time);
   };
 };
}

2 个答案:

答案 0 :(得分:0)

尝试一下:

function onEdit(e) {
 var rg=e.range;
 var sh=rg.getSheet();
 var name=sh.getName();
 if( name=="GMB Descriptions") { 
   if( rg.columnStart==4) { 
     var nextCell = rg.offset(0, 1);
     if( nextCell.getValue()=='') { 
       var dt=Utilities.formatDate(new Date(), Session.getScriptTimeZone(), "MM/dd/yy - h:mm a");
       nextCell.setValue(Utilities.formatString('%s\n%s',dt,Session.getActiveUser().getEmail()));
      }
    }
  }
}

答案 1 :(得分:0)

修改后(略有减少)的脚本如下:

function onEdit(e) {
  var rg = e.range;
  if (rg.getSheet().getName() == "GMB Descriptions" && rg.columnStart == 4) { 
    var nextCell = rg.offset(0, 1);
    if (nextCell.getValue() == '') {
      var dt = Utilities.formatDate(new Date(), Session.getScriptTimeZone(), "MM/dd/yyyy - h:mm a - ");
      var userMail = e.user.getEmail();
      nextCell.setValue(dt + userMail);
    }
  }
}

感谢Cooper提供的 Utilities 提示,它可以正常工作。我们使用e.user.getEmail()假设没有安全问题(根据问询者的意见)。在为我测试时,它可以按预期工作。