반응형
Google Sheets의 권한 관리는 존재하지만,
public으로 열어놓앗을 경우의 권한관리에는 어려움이 있다.
모든 사용자에게 Sheet를 수정 할 수 있는 권한을 주고
Google Sheets의 비밀번호를 설정해 비밀번호를 아는 사람들만 사용할 수 있도록 하고 싶다.
나만 볼수 있는, 별도의 Google Sheet에 비밀번호를 적어 놓았다.
다른 Google Sheets에서 password를 가져와, prompt를 통해 비밀번호를 입력 받는다.
function protectSheet () {
// 비밀번호를 관리하는 시트
const passwordSheetId = "GOOLE_SHEET_ID";
const passwordSheetName = "password";
const passwordSheetSheet = SpreadsheetApp.openById(passwordSheetId).getSheetByName(passwordSheetName);
// 비밀번호 추출
const PASSWORD = passwordSheetSheet.getRange("A1").getValue();
const ui = SpreadsheetApp.getUi();
let pwd = '';
let btnState = ui.Button.CANCEL;
let result = ui.prompt("비밀번호 확인", "비밀번호를 입력하세요.\n\n", ui.ButtonSet.OK);
let button = result.getSelectedButton();
let input = result.getResponseText();
if ( button == ui.Button.OK && input == PASSWORD) {
okMessage(ui);
} else {
while ( pwd != PASSWORD || btnState != ui.Button.OK ) {
if ( pwd == PASSWORD ) {
okMessage(ui);
break;
}
let prmopt = ui.prompt("비밀번호 확인", "비밀번호가 일치하지 않습니다.\n비밀번호를 다시 입력하세요.\n\n", ui.ButtonSet.OK);
pwd = prmopt.getResponseText();
button = prmopt.getSelectedButton();
}
}
}
function okMessage(ui) {
ui.alert("Google Sheet 사용이 가능하십니다.");
}
위에서 만든 함수를
onOpen 트리거로 등록 시킨다.
Google Sheets 가 실행되었을때(열렸을때) 화면
위와 같이 코드를 작성하면
onOpen 트리거 실행 시 딜레이가 있기때문에 Apps Srcript에 접근이 가능해 관리자 sheet id 를 확인 할 수 있다.
그렇기떄문에, 다른 sheet의 password를 가져오는 부분을
다른 라이브러리로 빼면, password를 가지고 있는 sheet를 노출 시키지 않을 수 있다.
this Apps script
function protectSheet () {
const PASSWORD = common.getPassword();
console.log(PASSWORD);
}
common library
/**
* password sheet에서 password 가져오기
*/
function getPassword() {
// 비밀번호를 관리하는 시트
const passwordSheetId = "1BAOmHAwWi1ebf5O8Jw48QIqbauaqQr5t7tBMEAuDE5w";
const passwordSheetName = "password";
const passwordSheetSheet = SpreadsheetApp.openById(passwordSheetId).getSheetByName(passwordSheetName);
// 비밀번호 추출
return passwordSheetSheet.getRange("A1").getValue();
}
반응형
'GCP > Apps Script' 카테고리의 다른 글
Apps Script로 카카오톡 메세지 보내기 (나한테) (5) | 2023.06.01 |
---|---|
Apps Script와 Google Sites를 이용한 홈페이지 제작 및 배포 (0) | 2023.05.25 |
Apps Script로 Google Sheets의 특정 데이터들을 가진 시트들만 모아 분류하기 (0) | 2023.05.22 |
Apps Script로 Google Sheets 기반의 상품 관리 시스템 만들기 (0) | 2023.05.17 |
Apps Script로 Google 서비스 기반의 간단한 예약 시스템 만들기 (2) | 2023.04.27 |