Google Apps Script에서 getRange()로 범위를 정한다음 getValues()로 해당 범위의 값들을 배열로 가져오는 경우가 종종 있는데 이 리턴 배열이 조금 독특하게 되어 있어서 기록으로 남겨보려한다.
시트에 위 그림과 같이 값들이 있다.
위 코드는 (1,1) 셀에서 아래 7번째 행까지의 값을 출력하는 함수이다.
출력한 결과는 위 그림과 같다.
한 열의 값들을 출력하려면 위 코드와 같이 사용하기 때문에 한 행의 값들을 출력하기 위해서는 저기서 값들만 반대로 해주면 되겠거니 생각했다. 그래서...
위 그림과 같이 소스를 짜고 실행을 시켜봤다.
그랬더니 위와 같이 값이 나오고 다른 값들이 출력되지 않았다. Google Apps Script가 가끔 정상적으로 동작하지 않는 경우가 있어서 몇 번이고 다시 돌려보았지만 결과는 똑같았다.
왜 그런지 몰라서 한참을 헤매다가 디버깅을 하니 그 이유를 알게 되었다.
위 그림이 열을 getValues() 했을 때의 alphabet 배열의 모습이고
위 그림은 행을 getValues() 했을 때의 alphabet 배열의 모습이다.
보시다시피 열을 getValues()로 가져오면 각각의 배열에 열의 값들이 담기지만
행을 getValues()로 가져오면 이중배열에서 오직 0번째 방에 있는 배열에만 모든 값들이 저장되기 때문에 그림 4의 4번째 줄에 반복문에서 alphabet.length를 하면 alphabet에는 1개의 배열만 있는 걸로 인식되어서 값을 받아와도 제대로 출력이 안되는 것이었다. 따라서...
코드를 위 그림과 같이 바꾸면
위 그림처럼 실행이 정상적으로 되어 행에 있는 값들을 가져올 수 있었다.
참고:
stackoverflow.com/questions/15929613/google-script-with-spreadsheet-function-to-count-column-values
'Google Spreadsheet > Google Apps Script' 카테고리의 다른 글
중복값 없는 단어시험지 (using Google Apps Script) v1.0 (0) | 2020.12.03 |
---|