구글 스프레드시트 공유 기능을 이용하여 다른 사람들에게 스프레드시트를 공유하고 일을 하다가 마감을 위한 설정이 필요할 때가 있습니다.
구글 워크스페이스 사용자의 경우에는 각각의 공유자 별로 공유 일자를 설정 해 줄 수 있지만, 일반 사용자의 경우에는 특별히 기간을 설정해줄 수 있는 방법이 없는데, 구글 스크립트 트리거 기능을 이용하면 설정이 가능합니다.
스프레드시트의 함수를 사용하는 것이 아니라 Apps Script를 사용해야 하므로 약간 까다로울 수 있지만, 한 번 제대로 설정해두면 필요한 만큼 공유 시간을 조절 할 수 있으므로 매우 유용합니다.
특별한 이벤트를 위해서 스프레드시트를 공유하고, 나중에 마감 시간이 되면, 다른 사용자들이 접근 할 수 없게 설정 할 수 있으므로 매우 편리합니다.
[ 사용법 ]
1. 메뉴에서 확장프로그램 > Apps Script를 클릭하여 스크립트 에디터 화면으로 들어갑니다.
2. 토스트에 '신청 마감 일시'의 시간을 적어주어, 공유자들이 화일을 열 때 마다 상기시켜줍니다.(필요없는 경우 토스트 삭제)
3. 마감일, 마감 시간을 형식에 맞추어 '1. 신청 마감 일시'의 시간으로 설정 해줍니다.
스크립트
4. 메뉴 My Menu > 마감일 지정을 누르면 지정된 시간으로 설정 됩니다.
5. 메뉴 My Menu > 마감일 삭제를 누르면 마감시간 설정이 삭제 됩니다.
6. 메뉴 My Menu > 마감일 삭제를 누르면 마감시간 설정이 삭제 됩니다.
6. 설정된 날짜(트리거 설정)가 되면 공유 설정을 해제 하고 자신만 볼 수 있게 설정이 바뀝니다~!
[ 스크립트 내용 ]
1. 마감에 대한 내용을 스프레드시트를 열 때 마다 토스트를 통해서 지속적으로 알려줍니다.
function onOpen() {
var ui = SpreadsheetApp.getUi();
// Or DocumentApp or FormApp.
ui.createMenu('My Menu')
.addItem('마감일 지정', 'Start')
.addItem('마감일 삭제', 'deleteAlltriggers')
.addToUi();
// 1. '신청 마감'을 토스트를 통해서 알림
var title = '신청 마감 일시';
var message = "2021년 03월 19일 저녁 7시이며, 이후에는 신청하실 수 없습니다!";
SpreadsheetApp.getActiveSpreadsheet().toast(message, title, 3);
}
2. 프로젝트 안에 있는 모든 트리거를 지워 초기화 한 후 마감시한을 트리거로 설정한 스크립트를 실행시켜 마감 시한을 넣어줍니다.
function Start() {
var triggers = ScriptApp.getProjectTriggers();
for (var i in triggers) {
ScriptApp.deleteTrigger(triggers[i]);
}
var timeZone = Session.getScriptTimeZone();
Logger.log(timeZone);
// 2. 마감일, 마감 시간을 설정
let date = "2021-03-19"
let time = "19:00"
let offset_to_utc = "+09:00"
var expireAt = new Date(date + "T" + time + offset_to_utc);
Logger.log(expireAt);
if ( !isNaN ( expireAt.getTime() ) ) {
ScriptApp.newTrigger("RemoveAllAccess")
.timeBased()
.at(expireAt)
.inTimezone("Asia/Seoul")
.create();
}
Browser.msgBox( date + ", " + time + "로 마감 설정되었습니다.");
}
3. 공유된 사람들의 권한을 전부 초기화 시켜서 자신만 편집 할 수 있도록 합니다.
function removeAllAccess() {
var spreadsheetId = SpreadsheetApp.getActiveSpreadsheet().getId()
var file = DriveApp.getFileById(spreadsheetId);
var editors = file.getEditors();
var viewers = file.getViewers();
var permission = file.getSharingPermission();
file.setSharing(DriveApp.Access.PRIVATE, DriveApp.Permission.EDIT);
for (var i=0; i<viewers.length; i++) {
file.removeViewer(viewers[i]);
}
for (var i=0; i<editors.length; i++) {
file.removeEditor(editors[i]);
}
}
'구글 오피스 > 앱스 스크립트' 카테고리의 다른 글
구글 스프레드시트 실행 할 때 제일 처음으로 열리는 시트 지정 방법 (0) | 2025.01.22 |
---|---|
구글 앱스 스크립트 시작 하기(Apps Script 기초) (1) | 2025.01.09 |
오늘의 요일 알아 내서 팝업창 띄우기(앱스 스크립트) (0) | 2024.08.31 |
구글 스프레드시트 트리거, 생성 삭제 (1) | 2024.08.30 |
구글 스프레드시트 날짜 시간 자동 계산 입력 함수(스크립트 자동 계산 입력, onEdit, Date, Time 함수) (3) | 2021.06.22 |