Как добавить пользователя в ячейку, показывающую, кто редактировал строку в Google Sheets? - PullRequest
0 голосов
/ 18 января 2019

У меня есть скрипт для GOogle Sheets, который работает почти идеально. Мне просто нужно одно дополнение: Добавить зарегистрированного пользователя в ячейку. У меня есть лист под названием «Описания GMB» Когда пользователь вводит информацию в любую строку ячейки в столбце 4, он показывает дату и время в столбце 5 той же строки. Нет проблем. Проблема в том, что я хочу, чтобы в этой ячейке также отображался зарегистрированный пользователь. В настоящее время (скрипт ниже) показывает: ММ / дд / гггг - чч: мм а Я хочу, чтобы он показывал: ММ / дд / гггг - чч: мм а - Пользователь вошел в систему Я понимаю, что он будет использовать электронную почту пользователя, который внес изменения в эту строку.

Резюме: Как добавить код в следующий скрипт, чтобы также показать пользователя, который внес это изменение?

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 голосов
/ 20 января 2019

Модифицированный (и немного уменьшенный) скрипт ниже:

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 за Утилиты подсказка, он отлично работает.Мы используем e.user.getEmail() при условии отсутствия проблем с безопасностью (по мнению автора).Во время тестирования у меня все работает как положено.

0 голосов
/ 19 января 2019

Попробуйте это:

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()));
      }
    }
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...