GCP/Apps Script

Apps Script로 Google Sheets에서 전화번호 양식 변환하기

whistory 2023. 8. 21. 14:38
반응형

 

구글시트에 사용자가 전화번호를 입력할때

 

010-XXXX-XXXX

010XXXXXXXX

 

이런 두가지 방식으로 입력 할 수 있을것이다.

 

정규식을 통해,

숫자로만 입력된 전화번호에 하이픈을 붙여 전화번호 양식으로 변경하는 방법과

입력된 전화번호양식의 숫자만 추출하는 법을 알아본다.

 

function convertPhoneNumber(value) {
  value = '01044459991'
  var convertValue = value.replace(/[^0-9]/g, '').replace(/^(\\d{2,3})(\\d{3,4})(\\d{4})$/, `$1-$2-$3`);
  console.log(`###### 입력한 값\\t\\t\\t==> ${value}`);
  
  console.log(`## 전화번호 양식으로 전환\\t\\t==> ${convertValue}`);
  console.log(`## 전화번호 양식의 하이픈 제거\\t==> ${convertValue.replace(/[^0-9]/g, '')}`);
}

 

 

 

 

 

 

 

 

그럼 이제 edit event를 통해, 값을 변경해주도록 해본다.

A 와 C에 전화번호를 입력하면

B와 D에 변환된 값을 자동으로 뿌려줘본다.

/**
 * edit event
 * @param {object} e = event
 */
function onEdit(e) {
  const getValue    = e.value;
  const spreadSheet = e.source;
  const sheetName   = spreadSheet.getActiveSheet().getName();
  const column      = e.range.getColumn();
  const row         = e.range.getRow();
  const activeCell  = spreadSheet.getActiveCell();

  if ( sheetName == "regex" ) {
    if ( column == 1 && row >= 1 ) {
      activeCell.offset(0, 1).setValue(convertPhoneNumber(getValue));
    } else if ( column == 3 && row >= 1 ) {
      activeCell.offset(0, 1).setValue(convertPhoneNumberText(getValue));
    }
  }
}

/**
 * 전화번호 양식으로 변환
 * @param {String} value = value
 */
function convertPhoneNumberTemplate(value) {
  var convertValue = value.replace(/[^0-9]/g, '').replace(/^(\\d{2,3})(\\d{3,4})(\\d{4})$/, `$1-$2-$3`);
  return convertValue;  
}

/**
 * 전화번호 하이픈 제거
 * @param {String} value = value
 */
function convertPhoneNumberText(value) {
  var convertValue = value.replace(/[^0-9]/g, '');
  return convertValue;  
}

 

 

화면 캡처를 이용해 변경되는 내용을 보여주기 위해 offset을 사용했고,

실제로는 offset을 사용하지 않으면 자동으로 전화번호를 변경해준다.

// 자기 자신의 값을 변경
activeCell.setValue(convertPhoneNumber(getValue));

// 다음 셀의 값을 변경
activeCell.offset(0, 1).setValue(convertPhoneNumber(getValue));
반응형