앱스 스크립트 (11) 셀 배경 색상 변경

앱스 스크립트 (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 앱스 스크립트 활용 예시 모음

One Reply to “앱스 스크립트 (11) 셀 배경 색상 변경”

답글 남기기

아래 항목을 채우거나 오른쪽 아이콘 중 하나를 클릭하여 로그 인 하세요:

WordPress.com 로고

WordPress.com의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Twitter 사진

Twitter의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Facebook 사진

Facebook의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

%s에 연결하는 중