pulldata("@javascript") 함수를 사용하여 JavaScript 함수를 호출할 수 있으므로 XLSForm 이상의 고급 기법과 로직을 사용할 수 있습니다.
사용자 설정 JavaScript 파일은 현장조사 디렉터리의 scripts라는 폴더에 저장해야 합니다.
기본 구문
사용자 설정 JavaScript 함수를 호출하여 값을 반환할 수 있습니다. pulldata("@javascript") 함수를 사용하여 사용자 설정 JavaScript 함수를 호출하려면 다음 구문을 사용하세요.
pulldata("@javascript", "yourJSFile.js", "yourFunction", "parameter1", "parameter2")
위 예시에서는 JavaScript 함수에 2개의 매개변수가 사용되지만 임의 개수의 함수 매개변수를 추가할 수 있습니다.
현장조사의 다른 질문은 pulldata("@javascript") 함수의 매개변수로 사용할 수 있습니다. 다음 예시에서 project_code 질문에 대한 답변은 projectLookup 함수로 전달됩니다.
pulldata("@javascript", "projects.js", "projectLookup", ${project_code})
비고:
지오포인트, 지오추적 또는 지오쉐이프 질문을 pulldata("@javascript") 함수의 매개변수로 설정하는 기능은 Survey123 Studio 및 Survey123 Mobile에서 지원되지 않습니다.
pulldata("@json") 함수를 사용하여 JavaScript 함수에서 생성된 JSON 객체에서 특정 값을 추출할 수 있습니다. 자세한 내용은 JSON에서 값 가져오기를 참고하세요.
특히 JavaScript를 사용하여 웹 서비스에 접근하고 ArcGIS 서비스를 보호하는 경우 기기 및 사용자 등록정보에 대한 접근 권한이 필요할 수 있습니다. pulldata("@property") 함수를 사용하여 현장조사 응답이 제출된 기기와 응답을 제출한 로그인한 사용자에 대한 정보를 추출할 수 있습니다. 자세한 내용은 기기, 사용자, 현장조사 등록정보를 참고하세요.
팁:
ArcGIS 피처 레이어에 대한 공간 및 속성 쿼리의 경우 pulldata("@javascript") 대신 pulldata("@layer") 함수를 사용하는 것이 좋습니다. 이 pulldata("@layer") 구문은 피처 레이어 쿼리를 위해 특별히 설계되었으며 공개 현장조사에 지원됩니다. 자세한 내용은 피처 레이어 쿼리를 참고하세요.
반복
비고:
이 섹션에서는 Survey123 Connect 및 Survey123 현장 앱에서만 사용할 수 있는 기능을 설명합니다. 이 기능은 Survey123 Studio 또는 Survey123 Mobile에서는 사용할 수 없습니다.
반복 전반의 모든 값을 JavaScript 함수에 전달할 수 있습니다. pulldata("@javascript") 함수에는 반복에서 값을 검색하기 위한 2가지 구현 스타일이 지원됩니다. 사용할 구현 스타일은 JavaScript 함수가 반복 내의 한 필드와 상호작용할지 또는 여러 필드와 상호작용할지에 따라 결정됩니다.
반복의 한 질문이 함수 매개변수로 전달된 경우 JavaScript 함수는 다음과 같이 특정 질문으로부터 일련의 값을 받습니다.
pulldata("@javascript", "yourJSFile.js", "yourFunction", ${question1})
반복 이름이 함수 매개변수로 전달된 경우 JavaScript 함수는 다음과 같이 매개변수를 반복 내 모든 값의 행 배열로 받습니다.
pulldata("@javascript", "yourJSFile.js", "yourFunction", ${repeat1}, "question1")
이러한 함수는 각각 JSON 객체를 생성하며 이 객체에는 개별 질문이 등록정보로 포함되어 있습니다.
비고:
Survey123 웹 앱에서는 pulldata("@javascript")를 통해 반복 내의 값에 접근할 수 없습니다. join()을 사용하여 웹 앱에서 반복 내의 한 질문에 대한 값을 수집하여 값 목록을 문자로 구분된 문자열로 변환하고 JavaScript 함수에서 값을 분할할 수 있습니다.
이제 Survey123 3.14 버전부터 JavaScript 함수를 통해 전달된 빈 값은 undefined 또는 null을 반환할 수 있습니다. 따라서 undefined 값의 가능성을 설명하는 JavaScript 함수를 작성해야 합니다.
제한 사항
현장조사 양식에 JavaScript 함수를 사용할 때는 다음과 같은 제한 사항이 있습니다.
- 문서 객체 모델(DOM)이 지원되지 않습니다.
- JQuery, Ember, Angular 등의 프레임워크가 지원되지 않습니다.
- 로컬 파일에 접근할 수 없습니다.
- 비동기 호출이 지원되지 않습니다.
- JavaScript 함수는 양식 작성자와 동일한 기관의 사용자가 완성한 양식에만 지원됩니다.
- 공개 현장조사에는 JavaScript 함수가 지원되지 않습니다.
- pulldata("@javascript") 함수는 Survey123 웹 앱의 pulldata("@json") 함수 내에서 호출할 수 없습니다.
스크립트 도구
비고:
이 섹션에서는 Survey123 Connect에서만 사용할 수 있는 기능을 설명합니다. 이 기능은 Survey123 Studio에서는 사용할 수 없습니다.
Survey123 Connect의 스크립트 탭에서 JavaScript 함수를 관리하고 편집할 수 있습니다. 이 탭에서는 JavaScript 파일을 생성하고, 코드를 검토하고, 함수를 테스트할 수 있습니다. 이 탭은 코드 유효성 검사 및 모범 사례 분석을 제공하여 JavaScript 함수 개발에 도움을 줄 수 있는 통합 개발 환경(IDE)을 완전히 대체하지는 않지만, Survey123에 있는 이러한 함수의 통합을 지원하도록 설계되었습니다.
Survey123 Connect에 있는 스크립트 탭의 메뉴에서는 다음과 같은 도구를 사용할 수 있습니다.
- 스크립트 파일 — 현장조사의 scripts 폴더에 있는 모든 JavaScript 파일을 표시합니다. 파일을 선택하여 보고 편집합니다.
- 스크립트 폴더 열기 — 현장조사의 scripts 폴더 위치에서 파일 브라우저를 시작합니다.
- 새 스크립트 파일 — 현장조사의 scripts 폴더에 스크립트 파일을 생성합니다. 파일 이름을 입력하고 생성을 클릭합니다.
- 함수 선택 — 열린 파일의 첫 번째 함수를 강조하고 테스트를 위한 매개변수를 제공합니다.
- 저장 — 열린 파일에 변경 사항을 저장합니다.
- 외부 편집기 시작 — 열린 파일에서 시스템 기본 JavaScript IDE를 시작합니다.
함수 선택 도구를 클릭하여 각 매개변수에 대한 값을 입력하고 결과를 확인하여 파일에 있는 첫 번째 함수의 동작을 테스트합니다. 함수를 완료한 후에는 여기에 제공된 pulldata 조건문을 복사하여 XLSForm에 붙여넣을 수 있습니다. 기관에 로그인되어 있으면 필요한 경우 매개변수 중 아무거나 마우스 오른쪽 버튼으로 클릭하여 토큰 붙여넣기를 클릭합니다.