일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 백엔드개발자
- 생활코딩
- UNIDEV
- CICD
- 위키북스
- AWS
- 개발공부
- 백엔드
- 스프링
- 42서울
- RDS
- Developer
- 프리티어
- EC2
- 스프링부트
- 게임개발동아리
- UNICON
- 배포
- 전국대학생게임개발동아리연합회
- 라피신
- 인디게임
- UNICON2023
- 도커
- 자바개발자
- 체크인미팅
- 티스토리챌린지
- 인프라
- 프로그래밍
- 온라인테스트
- 오블완
- Today
- Total
Hyun's Wonderwall
[구글 스프레드시트] 생성한 사람&시각, 수정한 사람&시각 기록 자동화로 생산성 높이기 (Google Apps Script) 본문
팀 프로젝트에서 데이터베이스 관리를 위해 스프레드시트를 사용하던 중, 생성한 사람과 수정한 사람을 자동 기록하고 싶다고 생각했다.
구글에 검색했을 때 바로 원하는 솔루션이 나오지 않아서 GPT에게 물어보았다.
"구글 스프레드시트에서 생성한 사람이랑 편집한 사람 이름을 함수로 자동으로 들어가게 하고 싶어"
클릭해야 하는 메뉴 경로를 잘못 알려주었지만, 코드는 잘 만들어 주었다.
스프레드시트를 생성해서 열고 상단 메뉴바에서 확장 프로그램 > Apps Script를 클릭한다.
그러면 기본 코드 파일이 있는 화면이 나오는데, GPT가 생성해준 코드를 복붙한다.
.gs 는 Google Apps Script에서 쓰이는 구글의 확장자명 같은데 js와 문법이 비슷했다.
나는 GPT에게 아래와 같은 요구사항을 전달해서 코드를 얻어내고 조금 수정하여 사용했다.
*요구사항: "K열: 등록한 사람, L열: 등록 시각, M열: 수정한 사람, N열: 수정 시각 이렇게 저장하게 자동화해줘"
function onEdit(e) {
const sheet = e.range.getSheet(); // 수정된 시트를 가져옴
const range = e.range; // 수정된 범위
const row = range.getRow(); // 수정된 셀의 행
const col = range.getColumn(); // 수정된 셀의 열
const user = e.user.email; // 사용자 이메일
const timestamp = new Date(); // 현재 시간
const registeredByCol = 11; // K열: 등록한 사람
const registeredTimeCol = 12; // L열: 등록 시각
const modifiedByCol = 13; // M열: 수정한 사람
const modifiedTimeCol = 14; // N열: 수정 시각
if (row <= 1) return; // 1행은 대상에서 제외
if (col <= 1 || col > 10) return; // 1, 10열은 대상에서 제외
// "등록한 사람"과 "생성 시각"이 비어 있는 경우만 기록
if (!sheet.getRange(row, registeredByCol).getValue()) {
sheet.getRange(row, registeredByCol).setValue(user); // 등록한 사람
sheet.getRange(row, registeredTimeCol).setValue(timestamp); // 생성 시각
}
// "수정한 사람"과 "수정 시각"은 항상 업데이트
sheet.getRange(row, modifiedByCol).setValue(user); // 수정한 사람
sheet.getRange(row, modifiedTimeCol).setValue(timestamp); // 수정 시각
}
파일명 변경은 필수는 아니지만, 코드의 목적을 잘 기억하기 위해 RecordEditor.gs로 변경했다.
실행을 클릭하면 "승인 필요" 창이 뜨는데 "권한 검토"를 클릭해 허용해주자.
"실행이 시작됨"이 뜨면 끝!
아래의 에러는 무시해도 된다. 아직 입력이 발생하지 않아서 그런 것.
스프레드시트로 돌아가 편집해보면, 자동화가 잘 적용된 것을 확인할 수 있다!
+++
다른 사람의 이메일이 기록되지 않는다... 다른 사람을 초대했음에도 불구하고 '사용자'에 한 계정만 뜨는 이슈를 발견했다. 추후 해결 방법을 알게 된다면 추가하겠다.
'IT' 카테고리의 다른 글
워드(Word) 사용 중 계속 꺼지는 문제 (0) | 2023.12.14 |
---|