pulldata("@javascript") 함수를 사용하여 JavaScript 함수를 호출할 수 있으므로 XLSForm 이상의 고급 기법과 로직을 사용할 수 있습니다.
Survey123 Connect의 스크립트 탭에서 JavaScript 함수를 관리하고 편집할 수 있습니다. 이 탭에서는 JavaScript 파일을 생성하고, 코드를 검토하고, 함수를 테스트할 수 있습니다. 이 탭은 코드 유효성 검사 및 모범 사례 분석을 제공하여 JavaScript 함수 개발에 도움을 줄 수 있는 통합 개발 환경(IDE)을 완전히 대체하지는 않지만, Survey123에 있는 이러한 함수의 통합을 지원하도록 설계되었습니다.
Survey123 Connect의 스크립트 도구
Survey123 Connect에 있는 스크립트 탭의 메뉴에서는 다음과 같은 도구를 사용할 수 있습니다.
- 스크립트 파일 - 현장조사의 Scripts 폴더에 있는 모든 JavaScript 파일을 표시합니다. 파일을 선택하여 보고 편집합니다.
- 스크립트 폴더 열기 - 현장조사의 Scripts 폴더 위치에서 파일 브라우저를 시작합니다.
- 새 스크립트 파일 - 현장조사의 Scripts 폴더에 스크립트 파일을 생성합니다. 파일 이름을 입력하고 생성을 클릭합니다.
- 함수 선택 - 열린 파일의 첫 번째 함수를 강조하고 테스트를 위한 매개변수를 제공합니다.
- 저장 - 열린 파일에 변경 사항을 저장합니다.
- 외부 편집기 시작 - 열린 파일에서 시스템 기본 JavaScript IDE를 시작합니다.
함수 선택 도구를 클릭하여 각 매개변수에 대한 값을 입력하고 결과를 확인하여 파일에 있는 첫 번째 함수의 동작을 테스트합니다. 함수를 완료한 후에는 여기에 제공된 pulldata 조건문을 복사하여 XLSForm에 붙여넣을 수 있습니다. 기관에 로그인되어 있으면 필요한 경우 매개변수 중 아무거나 마우스 오른쪽 버튼으로 클릭하여 토큰 붙여넣기를 클릭합니다.
비고:
스크립트 탭에 라인 번호 옆의 오류 표시기와 함께 기본 구문 오류가 표시됩니다. 오류 처리는 JavaScript 함수 내에서 실행되어야 합니다. 콘솔 결과는 스크립트 탭에 표시되므로 함수에 콘솔 메시지를 포함하면 결과와 함께 표시되는 오류, 경고 및 정보 메시지를 볼 수 있습니다.기본 구문
사용자 설정 JavaScript 함수를 호출하여 값을 반환할 수 있습니다. pulldata("@javascript") 함수를 사용하여 사용자 설정 JavaScript 함수를 호출하려면 다음 구문을 사용하세요.
pulldata("@javascript", "yourJSFile.js", "yourFunction", "parameter1", "parameter2")
사용자 설정 JavaScript 파일은 현장조사 디렉터리의 스크립트라는 폴더에 저장해야 합니다. 위 예시에서는 JavaScript 함수에 2개의 매개변수가 사용되지만 임의 개수의 함수 매개변수를 추가할 수 있습니다.
pulldata("@json") 함수를 사용하여 JavaScript 함수에서 생성된 JSON 객체에서 특정 값을 추출할 수 있습니다. 자세한 내용은 JSON에서 값 가져오기를 참고하세요.
특히 JavaScript를 사용하여 웹 서비스에 접근하고 ArcGIS 서비스를 보호하는 경우 기기 및 사용자 등록정보에 대한 접근 권한이 필요할 수 있습니다. pulldata("@property") 함수를 사용하여 현장조사 응답이 제출된 기기와 응답을 제출한 로그인한 사용자에 대한 정보를 추출할 수 있습니다. 자세한 내용은 기기 및 사용자 등록정보를 참고하세요.
팁:
ArcGIS 피처 레이어에 대한 공간 및 속성 쿼리의 경우 pulldata("@javascript") 대신 pulldata("@layer") 함수를 사용하는 것이 좋습니다. 이 pulldata("@layer") 구문은 피처 레이어 쿼리를 위해 특별히 설계되었으며 공개 현장조사에 지원됩니다. 자세한 내용은 피처 레이어 쿼리를 참고하세요.
반복
반복 전반의 모든 값을 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") 함수 내에서 호출할 수 없습니다.