首页 > 解决方案 > 如何将用户添加到显示 Google 表格中谁编辑了行的单元格?

问题描述

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

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

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);
   };
 };
}

标签: google-apps-scriptgoogle-sheets

解决方案


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

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 for Utilities的提示,它运行良好。我们使用e.user.getEmail()假设没有安全问题(根据提问者的意见)。在为我测试时,它按预期工作。


推荐阅读