구글시트/Sheets

[구글시트] 숫자를 한글로 표현하기

Consomme 2024. 6. 24. 18:36
반응형

구글시트로 청구서를 만드는 중입니다. 합계금액에 한글로 "일금 0000원정"이라는 한글로 된 금액을 표시하고 싶었습니다. 구글 시트에서 숫자를 한글로 표현하기 위한 앱 스크립트 코드를 작성할 수 있습니다. 이 코드에서는 숫자를 한글로 변환하는 함수와 이를 구글 시트에서 호출할 수 있는 함수를 구현합니다.

챗gpt의 힘을 빌렸습니다.

 

  • 구글 시트에서 확장프로그램 > Apps Script를 클릭하여 앱 스크립트 편집기를 엽니다.
  • 제목 없는 프로젝트에 기본코드가 있습니다. 전부 지워줍니다.
  • 아래 코드를 복사하여 붙여넣습니다.
function numToKorean(num) {
  const units = ['', '십', '백', '천'];
  const bigUnits = ['', '만', '억', '조', '경'];

  if (num === 0) return '영';

  let result = '';
  let bigUnitIndex = 0;

  while (num > 0) {
    let chunk = num % 10000;
    num = Math.floor(num / 10000);

    if (chunk > 0) {
      let chunkStr = '';
      for (let i = 0; i < 4; i++) {
        let digit = chunk % 10;
        if (digit > 0) {
          chunkStr = digitToKorean(digit) + units[i] + chunkStr;
        }
        chunk = Math.floor(chunk / 10);
      }
      result = chunkStr + bigUnits[bigUnitIndex] + result;
    }
    bigUnitIndex++;
  }

  return '일금 ' + result + '원정';
}

function digitToKorean(digit) {
  switch (digit) {
    case 1: return '일';
    case 2: return '이';
    case 3: return '삼';
    case 4: return '사';
    case 5: return '오';
    case 6: return '육';
    case 7: return '칠';
    case 8: return '팔';
    case 9: return '구';
    default: return '';
  }
}

function convertNumberToKorean(range) {
  let sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  let values = sheet.getRange(range).getValues();

  for (let i = 0; i < values.length; i++) {
    for (let j = 0; j < values[i].length; j++) {
      if (typeof values[i][j] === 'number') {
        values[i][j] = numToKorean(values[i][j]);
      }
    }
  }

  sheet.getRange(range).setValues(values);
}

function onOpen() {
  let ui = SpreadsheetApp.getUi();
  ui.createMenu('Custom Menu')
      .addItem('Convert Numbers to Korean', 'showPrompt')
      .addToUi();
}

function showPrompt() {
  let ui = SpreadsheetApp.getUi();
  let response = ui.prompt('Convert Numbers to Korean', 'Please enter the range (e.g., A1:B10):', ui.ButtonSet.OK_CANCEL);

  if (response.getSelectedButton() == ui.Button.OK) {
    let range = response.getResponseText();
    convertNumberToKorean(range);
  }
}

 

프로젝트를 클릭해서 "숫자를 한글로"(임의대로 하셔도 됩니다.)하고 저장합니다. 

 

구글시트로 돌아갑니다.

  1. 새로고침 후 메뉴에 Custom Menu가 추가된 것을 확인할 수 있습니다.
  2. Custom Menu > Convert Numbers to Korean을 클릭하면 승인요청을 합니다. 승인요청 후 다시 한번 누르면
  3. 범위를 입력할 수 있는 창이 나타납니다.
  4. 숫자를 변환하고 싶은 셀 범위를 입력하면 해당 범위의 숫자가 한글로 변환되며, 앞에 "일금", 뒤에 "원정"이 추가됩니다.

 

구글시트 숫자를 한글로 예제
구글시트 숫자를 한글로 표현하여 일금000원정 표현하기

이 스크립트는 숫자를 한글로 변환할 때 "일금"과 "원정"을 자동으로 추가하여 변환된 값을 셀에 반영됩니다.

반응형