작업 스케줄러에 대한 페이지 스크립트 생성

  • 릴리스 버전: Australia
  • 업데이트 날짜 2026년 03월 12일
  • 소요 시간: 5분
  • 이벤트를 통해 클라이언트 상태를 업데이트하거나 workItem 객체를 속성으로 변환할 수 있도록 사용자 작업 스케줄러 지정 페이지 스크립트를 추가합니다.

    시작하기 전에

    필요한 역할: workspace_admin 또는 ui_builder_admin

    이 태스크 정보

    카드 및 Handle card action clicked 해당 작업을 클릭할 때 생성되는 이벤트를 처리하기 위해 페이지 스크립트를 추가합니다Handle card clicked.

    페이지 스크립트를 추가하여 Transform workItem to cardProps 작업 큐의 객체를 workItem 카드 구성요소의 속성으로 변환합니다.

    주:
    작업 스케줄러 카드를 사용자 지정한 경우 아래 단계에 따라 클라이언트 스크립트를 추가할 수 있습니다.

    프로시저

    1. 클라이언트 스크립트 아이콘( 클라이언트 스크립트 아이콘)을 선택합니다.
    2. 페이지 스크립트를 Handle card clicked 생성합니다.
      1. 페이지 스크립트 섹션에서 +추가를 클릭합니다.
      2. 스크립트 이름 필드에 을 입력합니다Handle card clicked.
      3. 스크립트 포함 섹션에서 다음 스크립트를 추가합니다.
        /**
        * @param {params} params
        * @param {api} params.api
        * @param {any} params.event
        * @param {any} params.imports
        * @param {ApiHelpers} params.helpers
        */
        function handler({api, event, helpers, imports}) {
          const {workItem} = api.context.props;
          api.emit('CARD_CLICKED', {workItem});
        }
    3. 페이지 스크립트를 Handle card action clicked 생성합니다.
      1. 페이지 스크립트 섹션에서 +추가를 클릭합니다.
      2. 스크립트 이름 필드에 을 입력합니다Handle card action clicked.
      3. 스크립트 포함 섹션에서 다음 스크립트를 추가합니다.
        /**
        * @param {params} params
        * @param {api} params.api
        * @param {any} params.event
        * @param {any} params.imports
        * @param {ApiHelpers} params.helpers
        */
        function handler({api, event, helpers, imports}) {
          const {workItem} = api.context.props;
          const {action: actionItem} = event.payload;
          api.emit('CARD_ACTION_CLICKED', {workItem, actionItem});
        }
        
    4. workItem을 cardProps로 변환 페이지 스크립트를 생성하고 스크립트 포함을 첨부합니다WorkSchedulerUIBCardUtils.
      1. 페이지 스크립트 섹션에서 +추가를 클릭합니다.
      2. 스크립트 이름 필드에 을 입력합니다Transform workItem to cardProp.
      3. 스크립트 편집기에서 다음 스크립트를 추가합니다.
        /**
        * @param {params} params
        * @param {api} params.api
        * @param {any} params.event
        * @param {any} params.imports
        * @param {ApiHelpers} params.helpers
        */
        async function handler({api, event, helpers, imports}) {
            const {workItem} = api.context.props;
            const {mappingFields, recordFields} = workItem;
            const cardUtils = imports['sn_wfo_work_sched.WorkSchedulerUIBCardUtils']();
            const fallbackValueLabel = await helpers.translate('<not defined>');
            const dropdownItems = workItem.tableMetadata.canDelete
                ? [{id: 'delete', label: await helpers.translate('Delete')}]
                : [];
            // Fields for getContent() and getAria()
            const contentFields = [{
                name: 'assigned_to',
                label: await helpers.translate('Assigned to')
            },
            {
                name: 'assignment_group',
                label: await helpers.translate('Assignment group')
            },
            {
                name: 'start_date',
                label: await helpers.translate('Start date')
            },
            {
                name: 'end_date',
                label: await helpers.translate('End date')
            }];
            // Create cardProps
            const cardProps = {};
            cardProps.tagline = {
                label: workItem.recordFields._row_data.displayValue || null
            };
            cardProps.heading = {
                label: mappingFields.description ? mappingFields.description.displayValue : fallbackValueLabel
            };
            cardProps.dropdowns = dropdownItems.length > 0
                ? [{id: 'dropdown1', items: dropdownItems, icon: 'ellipsis-v-outline'}]
                : [];
            cardProps.content = await cardUtils.getContent(helpers, contentFields, workItem, null, null, true);
            cardProps.aria = await cardUtils.getAria(helpers, contentFields, workItem, null, true);
            cardProps.assignedTo = mappingFields.assigned_to ? mappingFields.assigned_to.displayValue : null;
            api.setState('cardProps', cardProps);
        }
      필드의 표시를 사용자 지정하려면 다음 문서를 https://developer.servicenow.com/dev.do#!/reference/next-experience/utah/now-components/now-label-value-stacked/overview참조하십시오.
    5. 저장을 클릭합니다.

      에 대한 작업 스케줄러페이지 스크립트를 만드는 방법에 대한 데모는 다음과 같습니다.

    다음에 수행할 작업

    작업 스케줄러 페이지 구성에서 workItem 속성 정의