앱스 스크립트 (10) 구글 드라이브 폴더 내 파일리스트 추출 (확장판) 하위 폴더 포함 포스팅에 답글로 “혹시 뎁스별로 헤더의 색상을 달리 지정할 수 있는 방법이 있을까요?“라는 질문을 받았습니다. 이번에는 확장판 스크립트를 수정하여 Depth(깊이)에 따라서 헤더에 해당하는 셀의 배경 색상을 변경하는 스크립트를 추가해보았습니다.
폴더를 지정하면 해당 폴더의 파일 리스트를 출력해주는 서브 함수인 _write_file_from_folder 를 수정하였습니다.
수정 후 스크립트
/**
* 폴더 내 파일 리스트를 시트에 쓰기
*/
function _write_file_from_folder(ifolder, isheet, ifolder_name){
var dafiles = ifolder.getFiles();
var fdepth = ifolder_name.match(/\>/g);
// write folder info
var srow = isheet.getLastRow() + 1;
isheet.getRange(srow, 1).setValue(ifolder_name);
isheet.getRange(srow, 3).setValue(ifolder.getDateCreated());
isheet.getRange(srow, 4).setValue(ifolder.getLastUpdated());
if(fdepth != null){
fdepth = fdepth.length;
isheet.getRange(srow, 6).setValue("FOLDER" + fdepth);
}else{
fdepth = 0;
isheet.getRange(srow, 6).setValue("FOLDER");
}
isheet.getRange(srow, 8).setValue(ifolder.getUrl());
var range = isheet.getRange("A"+srow+":H"+srow);
switch ( fdepth ) {
case 1:
range.setBackground("#fff2cc");
break;
case 2:
range.setBackground("#d9ead3");
break;
case 3:
range.setBackground("#c9daf8");
break;
default:
range.setBackground("#f3f3f3");
}
// write file list 파일 리스트 쓰기
while(dafiles.hasNext()){
var dafile = dafiles.next();
var file_name = dafile.getName();
srow = srow + 1;
// Write file info
isheet.getRange(srow, 1).setValue(ifolder_name); // 폴더 이름
isheet.getRange(srow, 2).setValue(file_name); // 파일 이름
isheet.getRange(srow, 3).setValue(dafile.getDateCreated()); // 만들어진 날짜
isheet.getRange(srow, 4).setValue(dafile.getLastUpdated()); // 마지막으로 수정한 날짜
isheet.getRange(srow, 5).setValue(dafile.getOwner().getName()); // 소유자
isheet.getRange(srow, 6).setValue(dafile.getMimeType().replace('application/vnd.google-apps.', 'google ')); // 파일 종류
isheet.getRange(srow, 7).setValue(dafile.getSize() / (1024 * 1024) ); // 파일 사이즈
isheet.getRange(srow, 8).setValue(dafile.getUrl()); // 파일 url
}
수정한 스크립트 설명
var fdepth = ifolder_name.match(/\>/g);
A열에 표시한 폴더 이름에서 “>”의 갯수를 셉니다.
“>”의 갯수는 하위 폴더의 Depth(깊이) 와 동일하기 때문입니다.
if(fdepth != null){
fdepth = fdepth.length;
isheet.getRange(srow, 6).setValue("FOLDER" + fdepth);
}else{
fdepth = 0;
isheet.getRange(srow, 6).setValue("FOLDER");
}
“>”가 하나 이상 있다면, F열에 표시하는 “FOLDER”옆에 Depth(깊이) 를 붙이는 표시를 하였습니다. “>”가 하나도 없는 폴더는 기준이 되는 폴더이므로 그냥 “FOLDER”라고 표시합니다.
switch ( fdepth ) {
case 1:
range.setBackground("#fff2cc"); // 연한 노랑색
break;
case 2:
range.setBackground("#d9ead3"); // 연한 연두색
break;
case 3:
range.setBackground("#c9daf8"); // 연한 파랑색
break;
default:
range.setBackground("#f3f3f3"); // 연한 회색
}
switch문을 이용하여 Depth(깊이)에 따라서 배경 색상을 다르게 설정하도록 만들었습니다.
색상을 다른 색으로 변경하고 싶으시다면 위 스크립트에서 각 색상 코드를 변경하시면 됩니다.
셀의 배경 색상을 변경하는 method는 Class Range > setBackground(color
) 를 이용했습니다.
setBackground(color) Sets the background color of all cells in the range in CSS notation (such as '#ffffff' or 'white').
결과
기존의 앱스 스크립트 (10) 구글 드라이브 폴더 내 파일리스트 추출 (확장판) 하위 폴더 포함 스크립트에 _write_file_from_folder 함수를 수정 후 스크립트를 실행하면 하위 폴더의 Depth(깊이) 에 따라서 각 헤더의 배경 색상이 다르게 표시됩니다.

구글 앱스 스크립트의 다른 활용법을 알고싶으시다면!
» G Suite 사용법 #5 앱스 스크립트 활용 예시 모음
………그저 빛입니다. 이제야 확인했네요! 매우매우 감사합니다. 정말 업무 효율성이 매우 높아집니다!
좋아요좋아요