JMP 스크립팅 언어의 가장 일반적인 용도는 작업 자동화입니다. 두 번째로 흔한 용도는 JMP 창에서 결과를 추출하는 것입니다. 이 작업은 간단하지만, 초보자에게는 스크립트를 사용하여 어떻게 해야 하는지 명확하지 않은 경우가 많습니다. 이 글에서는 통합된 디스플레이 객체 모델을 사용하여 창의 구조를 설명합니다. 그런 다음 모든 창의 콘텐츠에 접근하는 방법을 제시합니다. 마지막으로, 몇 가지 다른 접근 방식을 보여줍니다.
본 문서에서는 특히 XPath 쿼리 언어를 소개합니다. 탄탄한 배경 지식과 더불어 JMP 개발을 위한 단위 테스트 스크립트를 작성하면서 얻은 경험을 바탕으로 실용적이고 이해하기 쉬운 예제를 제공합니다. 또한 JMP 콘텐츠에 더욱 쉽게 접근할 수 있도록 도와주는 대화형 JMP 도구와 몇 가지 모범 사례도 소개합니다. JMP 검색 결과에서 원하는 정보를 얻는 가장 좋은 방법을 함께 알아보겠습니다!
안녕하세요. 저는 마크 베일리이고, 동료 타냐 멀던과 함께 이 자리에 섰습니다. 저희 발표 제목은 "보이긴 하는데, 어떻게 꺼내 볼 수 있지?"입니다. 흔히 발생하는 상황을 다뤄보려고 합니다. JMP는 여러 창에 다양한 결과를 출력하는데, 어떤 시점에는 분석을 자동화하거나, 결과를 사용자 정의하거나, 표시 방식을 수정하거나, 또는 추가 계산을 위해 특정 정보를 추출하고 싶을 수 있습니다. 이때 몇 가지 질문이 생깁니다. 어떻게 해야 할까요? 이러한 결과에 접근할 수 있는 방법이 있을까요? 도움이 될 만한 도구가 있을까요? 마지막으로, 25년 가까이 JMP 스크립팅을 사용해 온 경험을 바탕으로, 이러한 목적에 대한 최적의 방법이 있을까요?
본론으로 들어가기 전에 한 가지 말씀드리겠습니다. JMP를 사용하면 언제든지 플랫폼에 맞는 스크립트를 저장할 수 있습니다. 플랫폼 실행 스크립트의 "Send to Display" 인수를 사용하면 화면에 적용한 모든 수정 사항이 자동으로 기록됩니다. 나중에 해당 분석과 결과를 재현하고 싶을 때 이 스크립트를 실행하면 됩니다.
이 "Send to Display" 인수는 JMP가 이러한 변경 사항을 기록할 수 있도록 고안된 메커니즘이지만 스크립팅 용도로는 사용되지 않습니다. JMP에서 제공하는 최적의 사용법을 보여드리겠습니다.
우선, JMP 창을 볼 때 실제로는 함께 작동하는 두 개의 객체를 보고 있다는 것을 이해해야 합니다. 첫 번째 객체는 분석 계층이라고 하며 모든 계산을 담당합니다. 사용자는 상황별 메뉴를 통해 분석 계층과 상호 작용합니다. 예를 들어, 삼각형을 클릭하여 선택할 수 있습니다. 다른 객체는 보고서 계층이라고 하며 분석 계층의 결과를 정리하고 표시합니다.
보고서 레이어와 통신하려면 객체 참조를 사용하여 메시지를 보내야 합니다. 이 보고서 레이어는 분기된 트리 구조를 가지고 있으며, 처음에 사용하는 참조는 이 디스플레이 트리의 루트를 가리킵니다. 각 분기의 노드는 JMP 디스플레이 상자입니다. 이제 문제는 메시지를 보낼 디스플레이 상자를 어떻게 찾거나 식별하는가입니다. 이를 위해 첨자를 사용합니다. 첨자는 원래 보고서 레이어 참조 뒤에 오는 대괄호 안에 있습니다. 디스플레이 상자가 복잡하게 중첩된 경우에는 첨자를 여러 개 사용해야 할 수도 있습니다. 첨자는 연속적으로 사용하거나, 여러 디스플레이 상자 목록을 포함하는 단일 첨자를 사용할 수 있습니다.
첨자는 여러 형태를 취할 수 있습니다. 절대 첨자, 상대 첨자 또는 조건 첨자가 가능합니다. 이를 설명하기 위해 아주 간단한 예제를 시작하겠습니다. 여기에서 대규모 REST 데이터 테이블을 엽니다. 변형(variant)을 사용하여 데이터 테이블에 메시지를 보내 키와 몸무게 간의 분석을 실행합니다. 이제 해당 참조가 변수 객체에 저장되었으므로 메시지를 보낼 수 있습니다. 예를 들어, 숫자 1과 함께 "fit line" 메시지를 보내 분석을 활성화하면 빨간색 최소 제곱 적합선이 결과로 표시됩니다.
하지만 저는 그래프가 표시되는 영역을 선택하고 싶습니다. 그러려면 보고서 메시지를 사용하여 분석 레이어에 해당 영역에 대한 참조를 요청해야 합니다. 그 참조를 저장합니다. 이제 그 참조를 첨자로 지정할 수 있습니다. 이 경우 '프레임 박스 1'이 적절한 첨자입니다. 이 부분은 나중에 자세히 설명하겠습니다. 그런 다음 메시지를 보내고 선택하면 됩니다. 이것이 첨자를 사용하는 기본적인 방법입니다.
먼저 절대 첨자에 대해 이야기해 보겠습니다. 이 경우, 모든 표시 상자의 분기 구조를 탐색할 때 어떤 분기를 따라가야 하는지 알려주는 인덱스를 사용합니다. 예를 들어, 적합도 요약 개요에서 숫자 열을 선택하고 싶다고 가정해 보겠습니다. 먼저 루트, 즉 제공된 참조에서 시작하여 분기를 따라 내려갑니다. 루트에서 두 번째 분기, 첫 번째 분기, 다시 첫 번째 분기 등으로 이동합니다. 마지막으로 select 메서드를 호출합니다.
보시다시피 이 방법은 효과가 있습니다. 절대 경로 스크립트는 유효하고 효과적이지만, 명시적으로 작성하기 어렵고 가독성도 떨어집니다. 또한 불안정합니다. 즉, 열려 있는 프로그램, 특정 작업을 수행하는 순서, 그리고 JMP 자체의 업데이트 등 다양한 상황에 따라 쉽게 오류가 발생할 수 있습니다. 따라서 절대 경로 스크립트 사용을 권장하지 않습니다.
상대적인 형식은 지정하고 읽기가 더 쉽습니다. 이 경우, 동일한 숫자 열을 얻으려면 보고서(report)로 시작한 다음 다음과 같은 첨자를 사용합니다. 윤곽선 상자 3번, 표 상자 1번, 숫자 열 상자 1번을 원합니다. 이 설명을 읽으면서 어떻게 작업하는지 거의 머릿속에 그려볼 수 있을 것입니다. 결과는 동일하지만 이 방식이 더 안정적입니다.
세 번째 방법은 XPath 쿼리 언어를 사용하는 것입니다. 이 경우, XPath 메시지를 보고서에 전송하며, 이 메시지는 하나의 인수를 받습니다. 이 인수는 원하는 결과를 얻기 위한 검색 문자열입니다. 결과는 앞의 두 방법과 동일하지만, 이 방법이 가장 안정적입니다. 또한 가장 강력하고 유연합니다. 모든 일치 항목 목록을 반환하며, 이 쿼리 언어는 다양한 함수와 조건부 논리를 지원합니다.
이 슬라이드는 이변수 창에 대한 XML 파일의 시작 부분을 보여줍니다. 이것은 확장 가능한 마크업 언어입니다. 자세히 다루지는 않겠지만, 이것은 JMP 창을 표현하는 방법이며, XPath 쿼리 언어는 이 형식을 기반으로 합니다.
JMP의 모든 창, 즉 JMP 디스플레이 트리는 XML을 사용하여 표현할 수 있습니다. XML은 일반적으로 계층적 데이터와 속성을 태그하고 저장하는 방법입니다. JMP는 이 언어의 버전 1을 구현하고 있으며, 해당 언어에 대한 자세한 설명과 기타 온라인 자료를 제공하는 별도의 자료가 있습니다.
이제 몇 가지 기본적인 구문 규칙을 살펴보면서 여러분이 개념을 이해할 수 있도록 도와드린 다음, 타냐에게 넘겨서 실제 사용 사례를 보여드리도록 하겠습니다.
XPath에는 절대 경로 형식도 있습니다. 슬래시 하나 뒤에 찾으려는 노드 이름을 붙여서 지정합니다. 연속된 노드는 슬래시를 여러 개 사용하여 표시합니다. 하지만 JMP의 트리 표시 방식은 일반적으로 최적의 방법이 아닙니다. JMP 창은 동적이기 때문입니다.
더 나은 방법은 상대 경로를 이용하는 것입니다. 이 경우, 두 개의 슬래시(/)를 사용하여 첫 번째 노드를 지정합니다. 이 노드는 표시되는 트리의 어느 위치에든 나타날 수 있으며, 그 뒤로 추가 노드들이 이어져 최종적으로 원하는 대상을 찾을 수 있습니다. 노드들이 반드시 인접해 있을 필요는 없습니다. 즉, 연속적인 분기일 필요는 없습니다.
세 번째 줄에서 간단한 예시를 볼 수 있습니다. 검색 문자열은 윤곽선 상자를 찾는 상대 경로입니다. 이렇게 하면 윤곽선 상자 안에 있는 모든 노드의 목록이 반환되므로 매우 강력합니다. 반면에, 조건자를 사용하여 더 구체적으로 검색할 수도 있습니다. 이 경우 대괄호 안에 있는 내용이 바로 그 조건자입니다. 이에 대해서는 나중에 더 자세히 설명하겠지만, 이 조건을 사용하면 모든 윤곽선 상자가 아니라 제목이나 요약 정보가 있는 윤곽선 상자만 검색할 수 있습니다.
이와 유사하게, 와일드카드를 사용하면 검색에 대한 세부 정보 중 일부만 지정할 수 있습니다. 예를 들어, 제목에 "summary"라는 단어가 포함된 모든 아웃라인 박스를 찾고 싶다고 가정해 보겠습니다. 제목은 "summary"일 수도 있고, "summary of fit"과 같은 다른 제목일 수도 있습니다. 와일드카드를 사용하면 일치하는 모든 항목을 찾을 수 있습니다. 또한 이를 사용하여 다음 레벨의 모든 노드를 검색할 수도 있습니다. Outlinebox/*는 모든 아웃라인 박스 내의 모든 디스플레이 박스를 반환합니다.
마찬가지로 노드뿐만 아니라 속성도 검색할 수 있습니다. 이 경우 모든 외곽선 상자의 모든 속성을 찾고 있습니다. '@'는 속성 기호이고, '*'는 속성 중 하나를 의미합니다.
이제 조건자에 대해 좀 더 자세히 알아보겠습니다. 조건자는 대괄호 안에 표시됩니다. 이 경우, 'summary of fit' 값을 가진 윤곽선 상자를 찾고 있습니다. 하지만 더 많은 작업을 수행할 수도 있습니다. 두 번째 줄에서는 동일한 검색을 사용하지만, 맨 마지막에 있는 숫자 열 상자만 선택합니다. 세 번째 줄처럼 처음 세 개의 윤곽선 상자를 검색하는 것처럼 원하는 정보를 지정할 수도 있습니다. 위치 함수를 사용하고 있으며, 일치하는 값을 찾으려면 해당 값이 특정 값보다 작아야 합니다. 노드 자체에 대한 정보뿐만 아니라 노드의 속성에 대한 정보도 지정할 수 있습니다. 예를 들어 너비가 10보다 큰 모든 텍스트 편집 상자를 찾을 수도 있습니다. 이처럼 다양한 기능을 활용할 수 있습니다.
검색을 하다 보면, 때로는 특정 디스플레이 상자에 대한 참조가 필요하거나 메시지를 보내고 싶을 때가 있습니다. 하지만 다른 경우에는 해당 노드의 값이나 속성이 필요할 수도 있습니다. 예를 들어 보겠습니다. 모든 접근 상자와 각 접근 상자 내의 모든 텍스트 편집 상자를 찾을 것입니다. 이때 디스플레이 상자에 대한 참조를 반환하는 대신, 해당 상자의 값, 즉 현재 텍스트 등을 가져오고 싶습니다. 마지막 줄에서는 창에 있는 모든 윤곽선 상자의 너비를 알아보고 싶습니다.
마지막으로 XPath의 '축(axes)' 개념에 대해 이야기하고 싶습니다. 축은 앞서 언급했던 것처럼 한 노드에서 다음 노드로 이동하고, 그 과정에서 앞, 뒤, 또는 옆을 살펴보는 것과 같은 의미입니다. 첫 번째 예시에서는 모든 축 상자를 찾을 것입니다. 특정 노드 유형을 지정하는 대신, 두 개의 마침표(.)를 사용하여 해당 축 상자의 부모 노드를 찾습니다.
두 번째 줄에서도 마찬가지로, 헤더에 '제곱합'이 있는 숫자 열 상자 헤더를 찾고, 그 부모 노드를 찾고자 합니다. 부모 노드가 바로 숫자 열 상자입니다. 이렇게 관계를 명시적으로 선언할 수 있습니다. 세 번째 예시에서는 첫 번째 그림 상자를 보고, 텍스트 편집 상자 유형의 자식 요소를 찾고 있습니다.
반대로도 할 수 있습니다. 이 슬라이드의 두 번째 예시와 비슷합니다. T-비율이라는 숫자 열 상자 헤더를 찾고, 그 헤더의 상위 요소인 숫자 열 상자 유형의 표시 상자를 찾고 싶습니다. 다양한 기능과 유연성을 활용할 수 있습니다. 간단한 검색 문자열만으로도 충분한 경우가 많지만, 필요한 경우 조건문이나 앞서 언급한 다른 구문 도구를 사용할 수 있습니다.
JMP에는 도움이 될 만한 기능이 몇 가지 있습니다. 도움말 메뉴에서 스크립팅 색인을 검색하면 이 브라우저를 디스플레이 박스 표시 모드로 변경할 수 있습니다. 그러면 사용 가능한 모든 디스플레이 박스와 관련 프로토콜을 찾을 수 있고 검색도 가능합니다.
또한, 윤곽선 상자 앞의 회색 삼각형을 마우스 오른쪽 버튼으로 클릭하면 메뉴가 나타나는데, 거기서 '표시 트리 보기' 또는 '속성 보기'를 선택할 수 있습니다. 이러한 도구는 표시 트리를 탐색하고 값과 속성을 확인하는 데 도움이 되는 대화형 도구입니다. 매우 유용할 수 있습니다.
또한, 개선 로그는 검색 결과를 확인하고 추가 수정이 필요한지 판단하는 데 매우 유용합니다. JSL 메시지인 'XML 가져오기'도 있습니다. 때로는 기본 XML 표현을 살펴봐야 할 때가 있는데, 이는 매우 도움이 될 수 있습니다. 또한, JSL 함수인 '표시 경로 가져오기'는 대상 표시 상자를 참조하는 올바른 첨자 형식 또는 XML 경로 형식을 알려줍니다.
저는 여기까지입니다. 이제 타냐에게 마이크를 넘겨 실시간 시연을 진행하도록 하겠습니다.
감사합니다, 마크. 제가 살펴보고 싶은 첫 번째 사례 연구는 JSL을 사용하여 이 보고서에 있는 값을 얻는 것입니다. 먼저 이러한 값을 담고 있는 요소가 무엇인지 확인해야 합니다. 이를 확인하는 한 가지 방법은 '속성 표시'를 이용하는 것입니다.
속성 표시를 보면 평균값이 숫자 열 상자에 포함되어 있음을 알 수 있습니다. 이 패널은 마크가 앞서 설명한 중첩 또는 분기형 트리 구조를 보여줍니다. 이 숫자 열 상자는 표 상자의 일부이고, 표 상자는 윤곽선 상자의 일부인 식입니다.
여기에서도 경로 개요 노드를 찾을 수 있습니다. 바로 이 JSL 코드를 사용하면 'mean'이라는 숫자 열 상자에 대한 참조를 얻을 수 있습니다. 기본 모드는 첨자 방식입니다. 이 방식을 XPath로 변경하면 JMP에서 'mean'이라는 숫자 열 상자에 대한 참조를 얻는 XPath 코드를 보여줍니다.
정보를 저장하는 요소를 파악했으면, 이제 해당 요소에 보낼 수 있는 명령어를 알아내야 합니다. 스크립팅 인덱스를 이용하는 것도 한 가지 방법입니다. 숫자 열 상자를 검색해 보면, 보낼 수 있는 다양한 GET 메시지가 있습니다. 여기서는 행렬을 가져오는 GET 메시지를 사용하겠습니다.
이 정보를 얻기 위해 여러 가지 방법을 사용하겠습니다. 첫 번째 방법은 보고서를 활용하는 것입니다. RPT는 마크가 앞서 설명한 보고서 레이어입니다. 보고서에서 첫 번째 숫자 열 상자를 찾아 해당 값을 행렬 형태로 가져오겠습니다. 로그에서 해당 값을 확인할 수 있습니다. 보고서를 다시 살펴보면 같은 값임을 알 수 있습니다.
다음으로, XPath 명령어를 사용하여 동일한 정보를 얻어 보겠습니다. 이번에는 "측정값 변동성 요약"이라는 제목의 윤곽선 상자를 찾고, "평균"이라는 헤더가 있는 숫자 열 상자를 찾아 행렬 형태로 가져오겠습니다.
마지막으로, 여기서 상대 첨자를 사용하겠습니다. 보고서에서 측정값의 변동성 요약과 평균이라고 표시된 숫자 열 상자를 찾아서 이를 행렬 형태로 가져오겠습니다.
세 가지 방법 모두 동일한 결과를 얻지만, 첫 번째 방법은 권장하지 않습니다. 안정성이 떨어지기 때문입니다. 만약 향후 JMP에서 보고서 형식을 변경하여 숫자 열 상자를 추가한다면, 이 코드를 실행해도 예상했던 결과가 나오지 않을 것입니다.
이 마지막 두 예시는 상당히 강력한 변경 사항입니다. 제가 마지막으로 보여드린 상대 경로 예시는 XPath 예시보다 간결합니다. 이는 보고서에서 단일 요소만 추출할 때 일반적으로 발생하는 현상입니다. XPath가 진가를 발휘하는 경우는 한 번에 여러 요소를 추출하거나, 마크가 앞서 언급한 것처럼 와일드카드와 조건자를 사용하여 복잡한 작업을 수행할 때입니다.
좀 더 복잡한 예를 살펴보겠습니다. 이 사례 연구에서는 두 응답에 대한 제한 요약 정보를 추출하려고 합니다. 두 개의 응답이 있고, 두 응답 모두에 대한 정보를 얻고자 합니다. 두 열을 사용하여 상대 첨자 기능을 활용하면 이 작업을 수행할 수 있습니다.
보고서 레이어에서 그 아래에 나타나는 첫 번째 표 상자에서 무게 제한 요약을 찾아 해당 정보를 얻을 수 있습니다. 그런 다음 두 번째 명령을 사용하여 첫 번째 표 상자에서 무게 제한 요약을 찾아 해당 정보를 얻을 수 있습니다.
또는 단일 X 그래프 명령을 사용할 수도 있습니다. 보고서 레이어에서 '관리도 작성기'라는 제목의 개요 상자를 찾을 수 있습니다. 여기 위에 보이시죠? 관리도 작성기 아래에 나타나는 모든 표 상자를 찾아 해당 정보를 얻을 수 있습니다.
해당 코드를 작성하면서 예상보다 훨씬 많은 정보가 로그에 기록되는 것을 확인했습니다. 여기에 보이는 것은 보고서에 나타나는 표 상자뿐 아니라 보이지 않는 표 상자도 포함됩니다. 이 보고서에는 다른 표 상자들도 있지만, 추가된 한도나 시그마 보고서와 같이 아직 보고서 레이어에 추가하지 않은 정보도 있습니다. 이러한 정보들을 XPath 문에 추가하여 가시성을 확보할 수 있습니다.
이 모든 테이블 상자에 대해 테이블 상자 자체뿐만 아니라 상위 테이블 상자도 살펴보고, 그것들이 보이는지 여부를 확인하고 싶습니다. 이 특정 코드에서는 가시성이 false인지 확인하지만, 위쪽에는 NOT 절도 있습니다. 본질적으로 제가 찾고자 하는 것은 보고서에 보이는 테이블 상자입니다. 이 코드를 실행하면 이전에 두 개의 별도 명령으로 얻었던 것과 동일한 정보를 얻을 수 있습니다. XPath를 사용하면 두 개의 별도 명령이 아닌 단일 명령으로 이 정보를 얻을 수 있습니다.
다음 사례 연구에서는 예측 프로파일러를 만들고 선호도를 극대화했습니다. 이 보고서에 있는 빨간색 Y 값과 빨간색 X 값을 얻고 싶습니다. 두 값 모두 축 값이고 빨간색이므로 같은 요소에 저장되어 있다고 생각할 수 있지만, 그렇지 않습니다.
속성 표시 창으로 돌아가면 이를 확인할 수 있습니다. 올바른 항목을 클릭하면 Y 값은 텍스트 상자이고 X 값은 숫자 편집 상자임을 알 수 있습니다. 먼저 텍스트 상자를 사용해 보겠습니다. XPath를 통해 예측 프로파일러를 찾은 다음 표시되는 텍스트 상자를 찾습니다. 보고서에 표시되지 않아야 하는 텍스트 상자가 있기 때문에 가시성을 위한 코드를 추가해야 했습니다.
해당 코드를 실행하면 빨간색 값뿐만 아니라 신뢰 구간에 대한 파란색 값도 함께 표시되는 것을 확인할 수 있습니다. 이는 신뢰 구간 값도 텍스트 상자에 저장되어 있기 때문입니다. for 루프를 추가하여 각 요소를 순회하면서 세 번째 값마다 빨간색 값만 추출하여 이 정보를 행렬에 저장할 수 있습니다.
이제 빨간색으로 표시된 Y 값뿐만 아니라 빨간색으로 표시된 X 값도 필요합니다. 이 값들은 숫자 편집 상자에 저장되어 있습니다. XPath 문을 사용하여 번호가 매겨진 편집 상자에서 예측 프로파일러를 찾고, 해당 값들을 행렬 형태로 가져올 수 있습니다. 아래 로그에서 해당 값들을 확인할 수 있습니다.
다음 사례 연구에서는 첫 번째 프레임 박스 또는 위치 차트에 포함된 모든 선의 Y 값, 즉 평균 직경을 구하려고 합니다. 속성 표시를 보면 이 프레임 박스 레이어에 접근할 수 없다는 것을 알게 될 것입니다. 여기를 클릭하면 프레임 박스는 표시되지만, 프레임 박스 안에 무엇이 있는지는 볼 수 없습니다. 프레임 박스에 이러한 값들이 어떻게 저장되는지 알아야 합니다. 이 정보를 얻는 또 다른 방법은 트리 구조 표시를 사용하는 것입니다.
'트리 구조 보기'에서 마크가 앞서 언급했던 분기 구조를 확인할 수 있습니다. 이 프레임 상자 안에는 여러 세그먼트가 있습니다. 제가 관심 있는 것은 아래쪽에 나타나는 선 세그먼트입니다. XPath 문을 사용하여 첫 번째 프레임 상자에서 모든 선 세그먼트를 가져올 수 있습니다.
이전에는 모든 XPath 문에 윤곽선 상자 노드가 있었지만, 이번에는 없습니다. Control Chart Builder에서는 윤곽선 상자가 실제로 필요하지 않습니다. Control Chart Builder의 모든 그래프는 응답이 여러 개인 경우에도 이 윤곽선 상자 아래에 표시됩니다. 따라서 이 경우에는 윤곽선 상자가 필요하지 않습니다.
이 코드를 실행하면 7개의 요소가 있는 것을 확인할 수 있습니다. 그런 다음 연관 배열을 사용하여 이 요소들로부터 Y 값을 가져올 수 있습니다. 실행 후, 평균값을 더한 값의 Y 값은 4.2이고, 하한값을 더한 값의 Y 값은 4.1인 것을 알 수 있습니다.
다음 사례 연구에서는 세 개의 서로 다른 그래프가 있습니다. 각 그래프의 Y축에 동일한 최소값과 최대값을 설정하고 동일한 기준선을 추가하려고 합니다. 먼저 축 상자에 대한 핸들을 얻어야 합니다. XPath를 사용하여 'fit group outline' 노드를 찾습니다. 그런 다음 보이는 모든 축 상자를 찾습니다.
축 상자가 6개 있는 것을 확인했습니다. 그래프가 3개 있고, 각 그래프마다 X축과 Y축이 하나씩 있으니 총 6개입니다. for 루프를 사용하여 각 축 값을 순회하겠습니다. Y축의 경우, 최솟값과 최댓값을 특정 값으로 설정하고 기준선을 추가하겠습니다. 이제 세 개의 그래프 모두에 기준선이 추가되었고, 최솟값과 최댓값이 동일한 값으로 설정되었습니다.
다음 예시에서는 전체 시그마 역량 요약 보고서를 간략하게 줄이려고 합니다. PP까지의 내용만 보고 싶고, CPM이나 예상값, 관측값은 보고 싶지 않습니다. XPath를 사용하면 가능합니다. 보고서 레이어에 아웃라인 박스 명령을 보내고, 전체 시그마 역량 요약 보고서를 찾도록 하겠습니다.
보고서의 해당 레벨에 대한 참조를 얻은 후, XPath를 사용하여 '예상', '관찰' 또는 '동일한 CPM'으로 시작하는 헤더 상자를 선택하려고 합니다. 이러한 상자를 선택한 후에는 가시성 축소 명령을 보냅니다. 이제 보고서에서 해당 값들이 사라진 것을 확인할 수 있습니다. 보고서에서 항목을 삭제하는 것은 바람직하지 않습니다. 보고서에서 항목을 삭제하면 예상치 못한 결과가 발생할 수 있습니다. 항목을 삭제하는 대신 보고서에서 항목을 축소하거나 숨기는 것이 좋습니다.
마지막으로 한 가지 예를 들어보겠습니다. 이 사례 연구에서는 '제한 관리' 플랫폼을 새 창에 배치했고, 이 도움말 버튼을 없애고 싶습니다. JSL 스크립트를 작성할 때, 결과를 다른 사람과 공유하고 싶을 때가 많습니다. 따라서 스크립트가 내 컴퓨터에서든 다른 사람의 컴퓨터에서든 동일하게 작동하는지 확인해야 합니다.
Windows와 Macintosh에서는 버튼 위치가 서로 다른 경우가 많습니다. 보고서에서 특정 위치를 기준으로 버튼을 찾는 것은 바람직하지 않습니다. 버튼의 이름이 아닌 위치를 기준으로 찾아야 합니다. 여기서는 창 핸들러 코드에 대해서는 자세히 설명하지 않겠지만, 다음 XPath 구문에 주목해 주시기 바랍니다. 저는 '도움말'이라는 제목의 버튼 상자를 찾고, 그 표시를 숨겼습니다. 그러면 도움말 버튼이 더 이상 아래쪽에 나타나지 않는 것을 볼 수 있습니다. 다시 말하지만, 방금 버튼을 클릭했을 뿐입니다. 보고서에서 버튼을 삭제하면 예상치 못한 문제가 발생할 수 있으므로 삭제하지 않을 것입니다.
보고서에서 값을 가져오는 세 가지 방법을 보여드렸습니다. 절대 경로 지정 방식은 변경에 취약하여 좋은 방법이 아닙니다. XPath 방식과 상대 경로 지정 방식은 비교적 안정적입니다. 보고서에서 단일 값만 가져오는 경우에는 상대 경로 지정 방식이 코드가 더 간결하고 간단할 수 있습니다. XPath 코드는 여러 정보를 한 번에 가져오거나 와일드카드 등을 사용하여 복잡한 작업을 수행할 때 유용합니다.
이 정보가 도움이 되었기를 바라며, 이제 다시 스크립트 작성에 착수할 준비가 되셨기를 바랍니다.