스프레드 시트의 사용자가 모두 Google 계정에 로그인 한 경우 사용자 이름을 "사용자 속성"서비스에 저장할 수 있습니다. 여러 사용자가 동시에 스프레드 시트를 사용하는 경우 코드에서 동일한 키 이름을 사용하더라도 사용자 속성에서 해당 사용자의 올바른 이름을 가져옵니다.
사용자가 Google 계정으로 로그인하지 않은 경우 사용자 속성을 사용할 수 없습니다. 각 사용자 이름을 스프레드 시트의 문서 속성에 저장할 수 있지만 동일한 스프레드 시트의 여러 사용자가 Google 계정에 서명하지 않은 경우 스프레드 시트는 누가 스프레드 시트를 사용하고 있는지 알 수 없으므로 알 수 없습니다. 검색 할 이름.
여러 사용자가 사용자가 Google 계정을 가지고있는 경우가 로그인되어 할당 어떤 이름을 알고 다음, 동시에 유일한 방법은 같은 스프레드 시트를 사용할 경우.
그래서, 다음 코드는 저장하고 사용자 속성에서 이름을 검색하는 방법을 보여줍니다.
function onOpen() {
var usrProps,sessionName;
sessionName = Browser.inputBox('ID Check', 'Enter your name', Browser.Buttons.OK);
if (!sessionName) {//The user did not enter a name
sessionName = Session.getActiveUser().getEmail();//Get the logged in users email address
sessionName = sessionName.slice(0,sessionName.indexOf("@"));//Remove domain part of email address
}
usrProps = PropertiesService.getUserProperties();//Get User Properties
usrProps.setProperty('usrName', sessionName);//Save the user name with a key name
return sessionName;
}
function onEdit() {
var currentNote,newNote,sessionName,usrProps;
// Set a comment on the edited cell to indicate when it was changed.
var ss = SpreadsheetApp.getActiveSpreadsheet()
var sheet = ss.getSheets()[0]
var range = sheet.getActiveRange()
// var name = onOpen().value; .... this what i would like to get
usrProps = PropertiesService.getUserProperties();//Get User Properties
sessionName = usrProps.getProperty('usrName');//Get the user name for this user that was saved in onOpen
currentNote = range.getNote();//Get current note
if (currentNote) {
newNote = currentNote + ' - Last modified: ' + new Date() + sessionName;
} else {
newNote = 'Last modified: ' + new Date() + sessionName;
}
range.clear({commentsOnly: true});//Clear existing comment
range.setNote(newNote);
}
'onOpen'이 콜백이라면, 그것으로부터 돌아 오는 것이별로 의미가 없습니다. 전역 변수 나 다른 메커니즘을 덮어 써야합니다. – Carcigenicate
동시에 여러 명의 사용자가 있습니까? 해당 사용자가 Google 계정에 로그인했는지 여부 –