본문 바로가기
프로그래밍/프로젝트

[Apps script] 교환/반품 처리 개선

by 숙님 2024. 10. 28.
728x90

[문제점]

1 예전 데이터(2021년~) 누적 
-> 시트의 무거움 
2 매번 처리를 위해 
아래로 드래그 해야하는 상황 
> 빠르게 처리해야할 데이터 
찾기에 시간 소요 
3 이미 완료된 건 + 미처리 건 혼재 
-> 이미 완료된 건은 숨김 OR 삭제 진행 필요 

 

[해결책]

Description
1 확장프로그램 - Apps script 클릭 
2
Appas script에 코드 작성 
- (시트 담당인) A팀, B팀 검토가 끝난 건은 자동 숨김 진행

3
트리거 설정 
*자동으로 하기 위함
 

 

[해결 후]

Description
1 ‘O’열과 ‘R’열이 모두 ‘완료’글자가 첨부되면 자동으로 숨김 진행 

2 입력 시 자동으로 진행 
3 숨김처리 한 것 필요시 
숨김해제 가능 

 

[상황]

빨간박스 내 '완료'기입 시 자동으로 숨김 처리 기능

[코드]

function hideCompletedRows() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('시트이름');
  var lastRow = sheet.getLastRow();

  if (lastRow < 2) return; // 처리할 데이터가 없으면 종료

  // O열과 R열의 값을 한 번에 가져오기
  var data = sheet.getRange('O2:R' + lastRow).getDisplayValues();
  var rowsToHide = [];

  // 모든 행을 반복하여 확인
  for (var i = 0; i < data.length; i++) {
    var cellO = data[i][0]; // O열
    var cellR = data[i][3]; // R열

    // 조건 확인
    if (cellO.includes('확인완료') && cellR.includes('완료')) {
      rowsToHide.push(i + 2); // 숨겨야 할 행 인덱스 저장 (헤더를 고려하여)
    }
  }

  // 숨길 행이 있다면 한 번에 숨김
  if (rowsToHide.length > 0) {
    var rowsToHideUnique = [...new Set(rowsToHide)]; // 중복 제거
    // 최대한 빠르게 여러 행을 한 번에 숨김
    for (var j = 0; j < rowsToHideUnique.length; j++) {
      sheet.hideRows(rowsToHideUnique[j]);
    }
  }
}

댓글