Keyboard shortcuts

Press ← or → to navigate between chapters

Press ? to show this help

Press Esc to hide this help

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에 입력했다고 가정합니다.

nameagezip_code
David2194105
David2410001
Mary3202110

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')
  )
)