rand(life)

구글스프레드 시트에 생기부 바이트수 표시 본문

컴퓨터/구글문서

구글스프레드 시트에 생기부 바이트수 표시

flogsta 2022. 5. 19. 11:07

google apps script 사용한다

'발표'라는 시트에

E열에 문자열을 기록하면

F열에 해당 문자열이 몇 바이트인지 숫자가 입력된다

(1행에 입력했을때는 작동하지 않는다)

function countByte(e) {
  var SHEET_NAME = "발표"
  var COL_To_RECORD = 5 // E열에 기록하므로
  var ROW_NOTRECORD = 1 // 1행은 기록하지 않으므로 
  // 한글 3, 엔터 2, 그외 1 바이트
/*  가 44032 힣 55203  */
var sheet = SpreadsheetApp.getActiveSpreadsheet();
var ss = sheet.getActiveSheet();

  if( ss.getSheetName() != SHEET_NAME  ) {return}; //지정된 시트이름이 아니면 종료 
    var rng = e.range;    // 수정된 셀을 변수 rng에 담는다
    var col = rng.getColumn(); //칼럼을 구한다.
    var row = rng.getRow(); // 행
    if ( col != COL_To_RECORD ) {return};  //E열이 아니면 종료 
    if ( row == ROW_NOTRECORD ) {return};  // 1행이면 종료

var tt =  rng.getValue();
var lengText = tt.length;

if ( lengText == 0 ) {
  rng.offset(0, 1).setValue(sum); 
  return;
}
var count = 0
var sum = 0
    
  for ( var i = 0 ; i < lengText; i++) {
    var t = tt.substr(i, 1); // 글자 하나
    var ascii_code = t.charCodeAt(0); // 아스키코드

    if ( ascii_code >= 44032 && ascii_code <= 55203 ) {
      count =  3    ; //한글
    }
     else if ( ascii_code == 10 ) {
       count =  2 ;// 엔터
     }
     else { 
       count = 1; //그외 
       }

       sum = sum + count ;
}

  rng.offset(0, 1).setValue(sum);  //
  
  }

트리거를 아래와 같이 설정하면

입력할 때마다 매크로가 작동한다.