다음과 같은 방법으로 스타일 목록 및 사용 여부를 확인하였습니다.
function OnScriptMacro_script24()
{
var A = GetPosBySet();
HAction.Run(“SelectAll”);
// HML 포맷으로 문서를 읽어옵니다.
var txt = GetTextFile(“HWPML2X”, “saveblock”);
HAction.Run(“Cancel”);
// 1. <STYLELIST Count="숫자"> 추출
var countMatch = txt.match(/<STYLELIST\s+Count="(\d+)"/i);
if (!countMatch) {
alert("에러: STYLELIST 정보를 찾을 수 없습니다.");
return;
}
var totalStyles = parseInt(countMatch[1]);
var resultMsg = "전체 스타일 개수: " + totalStyles + "개\n";
resultMsg += "----------------------------\n";
// 2. 0번부터 totalStyles-1번까지 루프
for (var i = 0; i < totalStyles; i++)
{
// <STYLE Id="i" Name="이름" ... /> 패턴 매칭
// 정규표현식 설명: Id="i"와 Name="값"을 순서와 상관없이 찾음
var styleDefRegex = new RegExp("<STYLE[^>]*Id=\"" + i + "\"[^>]*Name=\"([^\"]+)\"", "i");
var styleMatch = txt.match(styleDefRegex);
if (styleMatch)
{
var styleName = styleMatch[1];
// 3. 본문 영역에서 Style="i" 사용 여부 확인
var useRegex = new RegExp(" Style=\"" + i + "\"", "g");
var isUsed = (txt.search(useRegex) > -1);
// 디버깅 정보 조립: [ID] 이름 : 사용여부
resultMsg += "ID " + i + " : [" + styleName + "] " + (isUsed ? "(사용 중)" : "(미사용)") + "\n";
}
else
{
resultMsg += "ID " + i + " : 정보를 찾을 수 없음\n";
}
}
// 결과 출력
alert(resultMsg);
SetPosBySet(A);