본문 바로가기

WeekdayLife

[구글시트] Color 관리(HEX CODE)

ppt나 xls로 문서를 만들다보면 자주쓰는 컬러를 관리할 필요가 있고, 온라인에서, 컬러를 사용할 때가 있는데, 이를 RGB테이블로 만들어 관리하면 편하게 사용할 수 있다. 온라인 서칭으로 주섬주섬 만들어 본다.

 

완성된 테이블은 아래와 같다.

원하는 컬러의 HEX CODE를 A열에 넣고, 스크립트를 돌려서 B열에 color를 넣고, C열에 RGB값을 뽑아준다. javascript는 구글링 한번으로 이런 코드를 찾기 편하게 되어있어서 참 좋다. 물론 입맛에 맞게 처리하려면 수정을 좀 해줘야하겠지만..

 

 

 

구글링으로 아래 코드를 줍줍한다. 위쪽 함수가 실행코드이고, 아래쪽 함수가 HEX CODE를 RGB로 변환해주는 코드이다.

오피스프로그램에서는 RGB값으로 컬러를 입력해야하기 때문이다.

 

function colorChart() {
  var app = SpreadsheetApp.getActiveSpreadsheet();
  var o_sht = app.getSheetByName("color");

  for (let r = 1; r < o_sht.getLastRow() + 1; r++) {
    Logger.log(r);

    if (r >= 2) {
      o_sht.getRange(r, 2).setBackground(o_sht.getRange(r, 1).getValue());
      o_sht.getRange(r, 3).setValue(hexToRgb(o_sht.getRange(r, 1).getValue()));
    }
  }
}

function hexToRgb(hex) {
  var result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex);
  return result
    ? {
        r: parseInt(result[1], 16),
        g: parseInt(result[2], 16),
        b: parseInt(result[3], 16),
      }
    : null;
}

 

 

이유는 알 수 없지만, HEX CODE에 따라서, RGB값이 뒤죽박죽으로 리턴된다.

RGB열을 생성하고, 아래 함수로, RGB 각 값을 순서에 맞게 슬라이싱 해 주었다.

=mid($C2, SEARCH(D$1,$C2)+2,3)*1

 

description열에 설명을 간략하게 써두면 첫 이미지처럼, 오피스 프로그램에서 불러오기 편한 형태가 되었다.

물론 adobe color같은 툴을 쓰면 편하겠지만, 나의 유료 계정이 언제 끝날지 모르기 때문에, 백업의 개념으로 만들어 둔다.

 

 

끝.