I try to get eMails of users which change any range in my Google Sheets.
I use this script below:
function onEdit(event) { var as = event.source.getActiveSheet();//Текущийлист var address = event.range.getA1Notation().toUpperCase();//Адресячейки var row = event.range.getRow(); //Номерстроки var col = event.range.getColumn(); //Номерстолбца var newValue = event.value; //Новоезначение var oldValue = event.oldValue; //Староезначение var userEmail = event.user.getEmail();//Пользователь(работаеттолькопривручнуюназначенномтриггере) let archiveSheetName = "reg"; let ss = SpreadsheetApp.getActiveSpreadsheet(); let archiveSheet = ss.getSheetByName(archiveSheetName) || ss.insertSheet(archiveSheetName); archiveSheet.appendRow([new Date(), userEmail, as.getName(), address, oldValue, newValue]);};But it works only when owner (me) change anythink in Google Sheets. When i test and change the user account (for example to xxxx@gmail.com), the script dont get this user eMail (xxxx@gmail.com). But i give for this user (xxxx@gmail.com) all permission in Google Shet.
I know, i can use Trigger by other account (xxxx@gmail.com) and it really work. But script give me double value. (1 - eMail "xxxx@gmai.com", 2 - empty value). If i use Trigger by more users (xxxx2@gmail.com - xxxxN@gmail.com), script get more EMPTY value. And its not good for me.
Look at screen below:
