Fusion 표 검증 함수
validate. 함수는 열과 표가 충족해야 할 조건을 만듭니다. 이 조건들을 action.validate_table에 전달하면 셀에 검증 버튼을 만들 수 있습니다. 버튼을 눌러 검증하며 실패하면 오류가 표시됩니다.
검증 범위의 첫 행에는 열 이름이 있어야 합니다. 성공과 실패에 따라 다른 안내를 표시하려면 순차 액션과 토스트를 연결합니다.
허용값 목록
validate.column_enum(column_name: string, allowed_values: array): string
지정한 열에서 null이 아닌 모든 값이 allowed_values에 있는지 확인합니다. 허용값을 직접 쓰거나 다른 셀에서 가져올 수 있습니다.
validate.column_enum('color', array('red', 'blue', 'green'))
validate.column_enum('color', array_flatten(B3:B14))
두 줄은 각각 조건을 만드는 예시입니다. null 자체를 금지하려면 column_not_null도 함께 사용합니다.
비어 있지 않은 값
validate.column_not_null([column_name: string, ...]): string
지정한 열들이 비어 있지 않은지 확인합니다. 행 전체가 비어 있으면 해당 열도 비어 있을 수 있습니다. 다른 값이 있는 행에서 검사 대상 열이 빈 경우에는 실패합니다.
숫자 값
validate.column_numeric([column_name: string, ...]): string
지정한 열들이 숫자 값만 포함하는지 확인합니다.
정규식
validate.column_regex(column_name: string, regex: string): string
열의 모든 값이 정규식에 맞는지 검사합니다. column_name은 action.validate_table에 전달한 범위의 첫 행에 있는 열 이름입니다.
- 모두 일치하면 성공하며 별도 메시지를 표시하지 않습니다.
- 일치하지 않는 값이 있으면 실패하고 해당 행 위치를 최대 10개까지 메시지에 표시합니다.
- 첫 행에 열 이름이 없거나 regex가 빈 문자열이면 메시지 없이 실패합니다.
다음 조건은 zip_code가 정확히 숫자 다섯 자리인지 검사합니다. 예를 들어 94105 형식이 해당합니다.
validate.column_regex('zip_code', '^[0-9]{5}$')
필요한 열 존재
validate.table_headers([column_name: string, ...]): string
지정한 열 이름이 표에 모두 있는지 확인합니다.
복합 키의 고유성
validate.table_key([column_name: string, ...]): string
지정한 열 값들의 조합이 표 안에서 고유한지 확인합니다. 열 각각의 값이 모두 달라야 하는 조건은 아닙니다.
name과 age를 검사할 때 (David, 21)과 (David, 24)는 서로 다른 조합이므로 통과합니다. (David, 21)이 두 번 나오면 실패합니다. 마찬가지로 (Bob, 20)과 (Bobby, 20)은 통과하지만 (Bob, 20)이 반복되면 실패합니다.
결과에 따라 안내하는 버튼
다음 가상 표를 A1:C4에 입력했다고 가정합니다.
| name | age | zip_code |
|---|---|---|
| David | 21 | 94105 |
| David | 24 | 10001 |
| Mary | 32 | 02110 |
zip_code는 앞자리 0을 유지하도록 문자열로 입력합니다. 아래 수식은 이름과 나이의 고유 조합, 숫자 나이와 우편번호 형식을 검사하고 결과에 맞는 메시지를 표시합니다.
=action.trigger(
action.label('button', 'Validate', 'tick', 'primary'),
action.serial(
action.validate_table(
A1:C4,
validate.table_headers('name', 'age', 'zip_code'),
validate.column_not_null('name', 'age', 'zip_code'),
validate.column_numeric('age'),
validate.column_regex('zip_code', '^[0-9]{5}$'),
validate.table_key('name', 'age')
),
action.toast('Validation passed', 'success'),
action.toast('Validation failed', 'danger')
)
)