Fusion 액션 함수
Fusion 액션은 셀에 버튼으로 표시되며 사용자가 클릭하면 실행됩니다. 범위 복사, 표 제출, 메시지 표시 등을 조합할 수 있습니다. 이 함수들은 action. 네임스페이스를 사용합니다. 기본 버튼은 정사각형 재생 아이콘이며 action.label과 action.trigger로 표시를 바꿀 수 있습니다.
함수 서명의 대괄호는 선택적 인수를, ...는 반복 인수를 나타냅니다. 서명은 인수 설명이며 실제 셀 수식은 =로 시작합니다.
범위 복사
action.copy_range(source: any, target: range, [copy_result: boolean]): string
source 범위의 내용을 target으로 복사합니다. copy_result가 true이면 계산한 값을, false 또는 생략이면 수식을 복사합니다. source를 null로 지정하면 대상 범위를 비웁니다.
다음 버튼은 클릭할 때 A1:A10을 B1:B10으로 복사합니다.
=action.copy_range(A1:A10, B1:B10)
레이블과 클릭 트리거
action.label(type: string, label: string, [icon: string], [intent: string]): string
action.trigger(label: any, action: any): string
action.label은 표시할 레이블을 만듭니다. type은 button, link 또는 tag입니다. label은 표시 문자열이며 icon에는 Blueprint 아이콘 이름을 지정할 수 있습니다.
| intent | 색 |
|---|---|
| primary | 파란색 |
| success | 초록색 |
| warning | 주황색 |
| danger | 빨간색 |
action.trigger는 해당 레이블을 클릭했을 때 지정한 액션을 실행합니다. 예를 들어 다음은 tick 아이콘과 초록색 Copy 버튼으로 복사를 실행합니다.
=action.trigger(
action.label('button', 'Copy', 'tick', 'success'),
action.copy_range(A1:A10, B1:B10)
)
셀 크기 조정과 병합을 이용하여 버튼의 위치와 크기를 맞출 수 있습니다.
표 영역에 제출
action.submit_to_region(
document_identifier: string,
region_name: string,
should_submit: any,
timestamp_column: string,
key_column: string,
key_value: any,
[column: string, value: any, ...]
): string
데이터를 키와 함께 표 영역에 제출하는 버튼을 만듭니다. 제출한 키가 대상 표에 있으면 해당 행을 갱신하고, 없으면 새 행을 추가합니다.
| 인수 | 의미 |
|---|---|
| document_identifier | 대상 Fusion 문서 RID. 문서 URL에서 확인하며 현재 문서는 document_metadata('document_identifier')로 참조합니다. |
| region_name | 대상 표 영역 이름. 받을 시트에 표 영역을 먼저 만듭니다. |
| should_submit | true인 입력을 제출하는 Boolean 값 또는 셀/범위 |
| timestamp_column | 현재 timestamp를 넣을 열 이름. 필요 없으면 null |
| key_column | 키를 저장할 열 이름 |
| key_value | 키로 제출할 셀 또는 범위 |
| column, value | 추가 대상 열과 제출값의 반복 쌍 |
다음은 현재 문서에 submit_table이라는 표 영역과 time, first_column, second_column 열을 준비한 예시입니다. 버튼을 누르면 A1:A10과 B1:B10의 값을 각 열에 제출하고 time에 현재 시각을 기록합니다.
=action.submit_to_region(
document_metadata('document_identifier'),
'submit_table',
true,
'time',
'first_column', A1:A10,
'second_column', B1:B10
)
다른 시트의 표 영역에도 제출할 수 있지만 사용자는 대상 시트의 편집 권한이 있어야 합니다. 대상 시트가 데이터셋에 동기화되어 있다면 해당 사용자가 동기화 데이터셋의 편집 권한도 가져야 최신 변경으로 데이터셋을 빌드합니다.
제출 옵션
다음 두 함수는 Experimental 기능입니다.
action.submit_options([key: string, value: any, ...]): options
action.submit_to_region_with_options(
document_identifier: string,
region_name: string,
submit_options: options,
should_submit: any,
timestamp_column: string,
key_column: string,
key_value: any,
[column: string, value: any, ...]
): string
기본 제출과 같은 인수에 submit_options가 추가됩니다.
| 옵션 키 | 동작 |
|---|---|
| submitEmptyCells | 빈 셀 또는 null을 대상 열의 기존 값 위에 씁니다. |
| succeedWhenNoRows | should_submit이 false이거나 모든 행에서 false여도 액션을 성공으로 처리합니다. 이 옵션이 없으면 실패하고 토스트를 표시하는 경우에 사용합니다. |
가상 submit_table의 기존 값도 빈 입력으로 지우려는 경우 다음처럼 옵션을 명시합니다. timestamp를 기록하지 않는 구성입니다.
=action.submit_to_region_with_options(
document_metadata('document_identifier'),
'submit_table',
action.submit_options('submitEmptyCells', true),
true,
null,
'first_column', A1:A10,
'second_column', B1:B10
)
병렬 및 순차 실행
action.parallel([action: any, ...]): string
action.serial(action: any, actionOnSuccess: any, [actionOnFailure: any]): string
action.parallel은 여러 액션을 동시에 시작합니다. 범위가 겹치지 않는 두 복사처럼 서로 독립적인 작업에 사용합니다.
action.serial은 첫 액션의 성공 여부에 따라 actionOnSuccess 또는 선택적인 actionOnFailure를 실행합니다. 검증 함수를 실행한 뒤 성공 또는 실패 안내를 표시하는 데 사용할 수 있습니다.
토스트
action.toast(message: string, [intent: string], [dismissButton: string]): string
페이지 위에 떠 있는 메시지를 표시합니다. message는 내용이고 intent는 표시 의도입니다. dismissButton을 지정하면 사용자가 해당 닫기 버튼을 누를 때까지 메시지가 남습니다. 순차 액션 안에 있으면 닫기 이후 다음 액션이 실행됩니다.
성공 또는 실패로 분기 종료
action.success(): any
action.fail(): any
각각 별도 작업 없이 성공 또는 실패 상태를 반환하는 액션입니다. action.serial의 분기에서 다음 동작을 제어할 때 사용할 수 있습니다.
클릭 시점에 계산
action.compute_on_trigger(actionCell: any): any
Experimental 함수입니다. actionCell로 참조한 셀의 액션을 실행 시점에 지연 계산합니다. 해당 셀에 대한 일반 의존성을 만들지 않으므로 일부 순환 의존성을 피할 수 있습니다.
선택 변경 전 액션을 실행하는 드롭다운
action.dropdown(
values: array,
[selected_value: string],
[actionBeforeChange: any],
[allow_invalid: boolean],
[placeholder_text: string]
): any
Experimental 함수입니다. values의 각 원소가 문자열 레이블로 바뀌므로 선택지 값은 고유해야 합니다. 새 선택을 저장하고 다른 수식에 반영하기 전에 actionBeforeChange를 실행할 수 있습니다.
=action.dropdown(array('red', 'blue', 'green'))
selected_value는 기본 문자열 레이블입니다. 생략하거나 null로 두면 선택하지 않은 상태로 시작합니다. 저장한 레이블이 values에 더 이상 없으면 빈 셀이 됩니다. allow_invalid를 true로 설정하면 이전 선택을 계속 반환하지만 그 결과는 문자열이며, 문자열 선택지를 보존하려는 경우에 권장합니다.
placeholder_text는 선택하지 않았을 때 표시할 안내입니다. 이 드롭다운은 action.serial 또는 action.parallel 안에 중첩할 수 없습니다.
Markdown 패널
action.open_markdown_panel(panel_title: string, markdown_content: string): string
지정한 제목과 Markdown 내용으로 문맥 사이드 패널을 엽니다. Markdown에 CSS 스타일을 적용한다면 .fusion-markdown-panel 클래스로 적용 범위를 한정할 수 있습니다.
URL 열기
action.open_url(url: string, [redirect: boolean]): string
기본적으로 URL을 새 탭에서 엽니다. redirect를 true로 지정하면 현재 스프레드시트 페이지를 해당 URL로 이동합니다.
서버의 사용자 정의 액션
action.plugin(action_name: string, [arg: any, ...]): any
현재 서버에 배포된 사용자 정의 액션을 이름과 인수로 실행합니다. 사용 가능한 액션 목록은 Palantir 담당자를 통해 확인합니다.
표 검증 실행
action.validate_table(table_range: range, [condition: any, ...]): string
표 범위에 지정한 모든 조건을 검사합니다. 각 조건은 validate 함수로 만듭니다. 클릭하여 실행한 검증이 실패하면 오류를 표시할 수 있고, action.serial과 토스트를 조합하여 결과별 안내를 구성할 수 있습니다.