sheet.getFocusedRow()나 sheet.getRowById("AR11") 등의 함수를 통해 얻게 되는 데이터 행 객체는 해당 행의 값과, 각 열 별로 설정한 속성값(CanEdit나 Visible 등) 그리고 주변행이나 부모행에 대한 링크 정보를 갖고 있습니다.
행 객체가 갖고 있는 각 열의 값을 확인하거나 수정하실 수 있습니다.
var row = sheet.getRowById("AR1");
var AmtColumnValue = row["AMT"]; //AMT 열의 값을 얻습니다.
row["AMT"] = 2300; //AR1행의 AMT 열의 값을 2300으로 수정합니다.
//수정된 값은 화면에 즉시 반영되지 않고, refreshCell() 이나 refreshRow()함수를 호출하셔야 반영됩니다.
getValue / setValue가 아니라 row["col"]로 값을 직접 읽거나 쓸 때는 아래를 주의합니다.
1. 날짜(Date) 컬럼 — 내부에 타임스탬프로 저장
row 객체의 날짜 값은 화면 표시 형태가 아니라 타임스탬프로 들어 있습니다. 화면에 보이는 형태로 꺼내려면 getValue나 전역 함수 IBSheet.dateToString을 사용합니다.
sheet.getValue(row, "DateData"); // "20240729"
row["DateData"]; // 1722240607605 (타임스탬프)
IBSheet.dateToString(row["DateData"], "yyyyMMdd"); // "20240729"
setValue를 쓰지 않고 날짜 값을 직접 넣을 때도 타임스탬프로 설정해야 합니다.
2. Text 컬럼 — 데이터가 숫자면 숫자형으로 저장
Type:"Text"로 만든 컬럼이라도 데이터가 숫자면 row 객체에는 숫자(number)형으로 저장됩니다. (getValue는 문자열로 반환)
// 서버가 문자열 "123"으로 내려준 Text 컬럼
row["TextData"]; // 123 (number — 숫자형으로 저장됨)
sheet.getValue(row, "TextData"); // "123" (string)
(col)OrigSearchData:1을 설정하면 변환 없이 원본 타입 그대로 둡니다(문자는 문자, 숫자는 숫자).
타입에 흔들리지 않는 값이 필요하면 getValue나 getString을 사용하세요.
Int / Float 컬럼도 빈 값이 들어오면 row["col"] 직접 값이 "" / null / undefined로 제각각이라, 바로 연산하면 NaN이 날 수 있습니다.
숫자 연산 전에는 Number(v) || 0 같은 방어가 안전합니다. (빈 값 처리 상세: (col)CanEmpty)
3. Changed(변경 상태)가 설정되지 않음
setValue로 값을 바꾸면 행에 Changed 상태가 자동으로 표시되지만, row 객체에 직접 대입하면 Changed가 설정되지 않습니다. 변경 감지나 저장 시 데이터 추출이 되지 않으므로, 직접 대입이 불가피하면 Changed도 함께 설정해야 합니다.
행 객체의 각 열에 부여한 속성을 확인 하거나 수정하실 수 있습니다.
var row = sheet.getFocusedRow();
var isEditable = row["AMTCanEdit"]; //AMT 열의 수정가능여부를 확인합니다.
row["AMTCanEdit"] = 0; //포커스된 행의 AMT열의 수정가능여부를 수정불가로 변경합니다.
//속성값에 따라 refreshCell() 이나 refreshRow()함수를 호출하셔야 반영될 수 있습니다.
행객체는 각 행의 위의 행,아래 행, 부모행, 자식행에 대한 링크를 갖고 있습니다.
| Name | Description |
|---|---|
| nextSibling | 아래 행 객체(트리 사용시에는 같은 부모 안에서 아래 형제 행. 없으면 null) |
| previousSibling | 위 행 객체(트리 사용시에는 같은 부모 안에서 위 형제 행. 없으면 null) |
| firstChild | 트리 사용시 현재 행 객체의 첫번째 자식행 객체 |
| lastChild | 트리 사용시 현재 행 객체의 마지막 자식행 객체 |
| parentNode | 부모행 객체 |
var row = sheet.getFocusedRow();
var nextRow = row.nextSibling; //포커스 된 행의 아래 행 객체
var parentRow = row.parentNode; //포커스 된 행의 부모행 객체
| product | version | desc |
|---|---|---|
| core | 8.0.0.0 | 기능 추가 |