Для этого требуется устанавливаемый триггер onEdit (). Я предоставляю функцию onOpen () с методом createMenu для установки триггера onEdit () из меню. Я также предоставил функцию isTrigger, которая проверяет, что она еще не установлена, чтобы у вас не было нескольких триггеров. Поэтому обязательно измените имя функции и удалите старую функцию onEdit (). Старая функция onEdit () не имела разрешения на получение информации о пользователе.
function onInstallableEdit(e) {
if(e.range.getSheet().getName()=='Sheet188') {
if(e.range.columnStart==3 && e.range.rowStart>1) {
if(e.range.offset(0,-2).isBlank()) {
e.range.offset(0,-2).setValue(Utilities.formatDate(new Date(), Session.getScriptTimeZone(), " HH:mm:ss E MMM dd,yyyy"));
}
e.range.offset(0,-1).setValue(Session.getActiveUser().getEmail());
}
}else{
return;
}
}
function installonEdit() {
if(!isTrigger('onInstallableEdit')) {
ScriptApp.newTrigger('onInstallableEdit').forSpreadsheet(SpreadsheetApp.getActive()).onEdit().create();
}
}
function isTrigger(funcName){
var r=false;
if(funcName){
var allTriggers=ScriptApp.getProjectTriggers();
for(var i=0;i<allTriggers.length;i++){
if(funcName==allTriggers[i].getHandlerFunction()){
r=true;
break;
}
}
}
return r;
}
function onOpen() {
SpreadsheetApp.getUi().createMenu('My Menu')
.addItem('Install On Edit Trigger','installonEdit')
.addToUi();
}