구글 스프레드시트를 개인적으로든 업무적으로든 다양하게 사용중입니다.
드랍다운 기능이 생기면서 엄청 유용하게 사용하고 있는데요
리스트를 자주 추가해줘야 하는 경우 드랍다운 목록으로 관리하든 범위로 관리하든 불편하기는 매한가지입니다.
그래서
드랍다운 대상 시트에 내용 입력 시 드랍다운 목록 범위에 있으면 그대로 사용하고
목록 범위에 없으면 목록 범위에 추가해주도록 스크립트를 만들었습니다.
function onEdit(e){
//e.range.getColumnIndex() : 수정될 시트의 컬럼 번호
//listEdit 함수의 두번째 파라미터 column : 참조할 리스트가 있는 컬럼 번호
var colNum = 0;
//여러 컬럼 리스트를 사용해야 하는 경우 수정할 컬럼과 참조할 컬럼을 여기에 추가
if(e.range.getColumnIndex() == 1) colNum = 1;
if(e.range.getColumnIndex() == 3) colNum = 4;
if(colNum != 0) listEdit(e.value, colNum);
}
function listEdit(value, column){
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sh = ss.getSheetByName('list');
var row = 2;
var lists = [];
while(sh.getRange(row, column).getValue() != ''){
lists.push(sh.getRange(row, column).getValue());
row++;
}
var result = false;
for(var list of lists){
if(value == list){
result = true;
break;
}
}
if(!result){
sh.getRange(row, column).setValue(value);
row++;
}
}
위 코드에서 몇가지 제약사항이 있는데요
1. 목록 시트명 고정 필요
2. 참조 리스트는 공백이 생기지 않게 할 것(리스트 삭제 시 아래 엤는 내용 끌어올려야함)
위 두가지만 지켜주시면 됩니다.
나중에 견본 시트 같이 올려드리겠습니다.
'개발자로 살기' 카테고리의 다른 글
[북리뷰] 모던 자바스크립트로 배우는 리액트 입문 (0) | 2023.03.31 |
---|---|
[북리뷰] 업무에 바로 쓰는 AWS 입문 (0) | 2023.02.28 |
내 구글드라이브 파일 리스트 만들기 (0) | 2022.09.12 |
[북리뷰] 구글 앱스 스크립트 완벽가이드 (0) | 2022.07.29 |
구글 앱 스크립트 기본 TimeZone 설정 변경하기 (0) | 2022.02.14 |