AppleScript를 통해 InDesign XMLElements를 추가할 때 어떻게 성능을 향상시킬 수 있습니까?

StackOverflow https://stackoverflow.com/questions/11574

문제

Adobe InDesign 문서 내에 XML 태그와 요소를 생성하는 AppleScript 프로그램이 있습니다.데이터는 테이블에 있으며 각 셀에 태그를 지정하는 데는 0.5초가 걸립니다.전체 스크립트를 완료하는 데 몇 시간이 걸립니다.

내부 루프 코드를 게시할 수 있지만 SO가 일반적인 것인지 구체적인 것인지는 확실하지 않습니다.폭도들이 결정하도록 할게요.

편집] 코드는 테이블에 행당 하나의 항목을 포함하는 목록 (이 루프 이전)을 작성합니다.테이블의 각 열에 대해 하나의 문자열을 포함하는 목록도 있습니다.각 셀에 대해 프로그램은 두 목록의 [행]/[열] 위치에 있는 항목을 연결하여 XML 요소와 XML 태그를 생성합니다.또한 해당 셀의 텍스트를 새로 생성된 요소에 연결합니다.

저는 AppleScript를 처음 접했기 때문에 이 코드 중 일부는 Adobe 샘플에서 대충 수정되었습니다.코드가 끔찍하더라도 기분이 상하지 않을 것입니다.

코드는 다음과 같습니다.

repeat with columnNumber from COL_START to COL_END

    select text of cell ((columnNumber as string) & ":" & (rowNumber as string)) of ThisTable

    tell activeDocument

        set thisXmlTag to make XML tag with properties {name:item rowNumber of symbolList & "_" & item columnNumber of my histLabelList}

        tell rootXmlElement

            set thisXmlElement to make XML element with properties {markup tag:thisXmlTag}

        end tell

        set contents of thisXmlElement to (selection as string)

    end tell

end repeat

편집하다:정답을 더 잘 반영하기 위해 질문을 다시 작성했습니다.

도움이 되었습니까?

해결책 2

나는 이것을 알아 냈습니다.

문서에는 여러 개의 데이터 테이블이 포함되어 있습니다.전체적으로 내보내야 하는 데이터 포인트는 약 7,000개입니다.저는 7,000명의 자식이 포함된 하나의 루트 요소를 만들고 있었습니다.

그러지 마세요.루트 요소에 각 하위 요소를 추가하는 작업은 약 5,000개의 하위 AppleScript가 시간 초과되어 프로그램이 중단될 때까지 점점 느려졌습니다.

해결책은 루트에서 ~480명의 자식을 생성하여 내 코드를 더 취약하게 만드는 것이었습니다. 각 자식은 약 16명의 손자를 가집니다.노드 수는 동일하지만 이제 코드가 충분히 빠르게 실행됩니다.(아직도 문서 처리하는데 40분 정도 걸리긴 하지만 인피니티에 비하면 한없이 적은 시간입니다.)

덧붙여서, 원래의 7,000명의 어린이 계획은 보이는 것만큼 멍청하거나 게으르지 않았습니다.새로운 솔루션은 내가 제어하지 않는 테이블의 데이터를 사용하여 두 테이블을 함께 연결하도록 강제하는 것입니다.이제 있어서는 안되는 공간이 너무 많으면 프로그램이 중단됩니다.(하지만 작동합니다.)

다른 팁

문제는 거의 확실하게 선택입니다.어쨌든 모든 텍스트를 한 번에 추출한 다음 내부 변수를 반복할 수 있습니까?

내부 루프 코드를 게시할 수 있지만 SO가 일반적인 것인지 구체적인 것인지는 확실하지 않습니다.폭도들이 결정하도록 할게요.

예시로 게시하는 코드는 귀하(또는 귀하의 상사)가 편안하게 느끼는 만큼 구체적일 수 있습니다. 대개는 더 구체적인 세부 정보를 제공하는 것이 더 쉽습니다.

내부 루프 코드의 길이가 적당하다면 게시할 수 없는 이유가 없습니다.나는 스택 오버플로가 일반적인 질문과 구체적인 질문을 모두 포괄하도록 의도되었다고 생각합니다.

InDesign이나 InDesign Server를 사용하고 계십니까?귀하의 문서는 몇 페이지입니까(또는 문서/ID 설정에 대해 어떤 다른 정보를 알려주실 수 있습니까)?

저는 InDesign Server 개발을 많이 합니다.반드시 코드와 관련되지 않은 몇 가지 이유로 인해 속도 저하가 발생할 수 있습니다.

지금은 약 100초 만에 script/xml에서 거의 완전히 100-300페이지의 문서를 생성하고 있습니다(훨씬 더 큰 작업을 수행할 수도 있습니다).

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top