06 · 런타임 입력값
시나리오
템플릿은 일반적으로 만들어두되, 실행할 때마다 특정 월이나 특정 지역을 지정하고 싶습니다. 운영자가 템플릿을 직접 고 치게 만들지 않고, 변환 시점에 값을 넘겨받는 방식입니다.
__inputs__ 에 선언
| name | type | required | default | label | options |
|---|---|---|---|---|---|
month | text | true | 대상 월 (YYYY-MM) | ||
region | select | false | 전체 | 지역 filter | 전체|서울|부산|대구 |
타입은 text, number, date, select 중 하나입니다.
템플릿 셀, 파일명, 그룹 키에서 사용
Cell: {{ "리포트 — " & __inputs__[month] }}
Filename: output_file_pattern = {{ __inputs__[month] }}-renewals.xlsx
Filter: {{ @filter [지역] = __inputs__[region] OR __inputs__[region] = "전체" }}
마지막 줄은 사실 그대로는 동작하지 않습니다 — XTL 에는 OR 키워드가 없습니다. 정공법은 시트 템플릿을 두 개 두고 상위 로직으로 분기시키는 것입니다. 일단 __inputs__ 의 가장 단순한 쓰임새는 셀, 파일명, 또는 고정 비교에 리터럴 값을 꽂아 넣는 것입니다.
{{ @filter [지역] = __inputs__[region] }}
…그리고 호스트 측에서는 운영자가 특정 지역을 골랐을 때만 convert() 를 호출하도록 합니다.
호스트에서 값 전달
import { convert } from '@jinyoung4478/xl3';
const outputs = await convert(templateBuffer, dataBuffer, {
inputs: { month: '2026-05', region: '서울' },
});
inputs.month 가 누락됐는데 month 가 required 로 표시되어 있다면, xl3 는 변환 시점에 xl3/inputs/missing-required 를 던집니다. region 을 넘기지 않으면 default 값인 전체 로 대체됩니다.
변환 없이 입력값 정의만 읽기
import { readTemplateInputs } from '@jinyoung4478/xl3';
const inputs = await readTemplateInputs(templateBuffer);
// → [{ name: 'month', type: 'text', required: true, ... }, ...]
운영자가 데이터 파일을 올리기 전에, 호스트 UI 에서 입력 폼을 미리 렌더링할 때 씁니다.