# Loop문 만들기 (appendix)

> 조회된 데이터 전체에 대해서 for loop문을 수행하는 것 보다는 가급적 formula를 이용하여 로직을 구성하는 것이 성능적으로 좋습니다.
> 하지만 formula를 통해 수행하기 어려운 경우라면 어쩔수 없이 행(row)나 열(col) 에 대해서 처음부터 끝까지 Loop문을 만들어 수행해야 하는 경우도 있습니다.

## 1. 행(row)단위 Loop문 만들기

행 단위로 Loop문을 구성할 때는 getDataRows()함수를 통해 전체 데이터 행들을 배열로 받은 후, 배열 안에 각 행의 객체를 접근하는 형태로 로직을 구성할 수 있습니다.

### Example

      //첫번째 데이터부터 마지막 데이터까지 Loop 문을 수행하면서 특정 열(열이름:CHK)에 체크 된 행 객체를 배열형태로 반환하는 참고용 로직입니다.
      //실제로는 getRowsByChecked()함수를 통해 아래와 같은 작업을 수행할 수 있습니다.

      //전체 데이터 행을 배열로 얻는다.
      var rows = sheet.getDataRows();
      var checkRowArr = [];
      for (var i = 0; i < rows.length; i++) {
        //CHK 열이 체크되어 있으면
        if (rows[i]["CHK"] == 1) {
          //배열에 넣는다.
          checkRowArr.push(row);
        }
      }
      //전체 체크된 행의 개수를 console에 출력
      console.log(checkRowArr.length);

## 2. 열(col)단위 Loop문 만들기

열 단위로 Loop문을 구성할 때는 getCols()함수를 통해 전체 열이나, 눈에 보여지는 열, 편집 가능한 열 등을 배열로 받은 후, 배열 안에 각 열이름을 접근하는 형태로 로직을 구성할 수 있습니다.

### Example

      //첫번째 데이터 행을 기준으로 Loop 문을 수행하여 Type이 Text인 열의 열이름을 배열에 담아 리턴하는 참고용 로직입니다.

      //눈에 보여지는 열(감춰진 열 제외)만 추출
      var colsArr = sheet.getCols("Visible");
      var textColArr = [];
      var fRow = sheet.getFirstRow(); //첫번째 행
      for (var i = 0; i < colsArr.length; i++) {
        //첫번째 행에 전체 열의 타입을 비교하여
        if (sheet.getType(fRow,colsArr[i]) === "Text") {
            //배열에 넣는다.
            textColArr.push(colsArr[i]);
        }
      }
      //Type이 Text인 열들을 console에 출력
      console.log(textColArr);

### Read More

- getDataRows method
- getCols method
- getFirstRow method

### Since

product | version | desc
--- | --- | ---
core | 8.0.0.0 | 기능 추가