通过AppleScript添加InDesign XMLElements时,如何提高性能?

JPL*_*mme 7 macos adobe applescript adobe-indesign

我有一个AppleScript程序,它在Adobe InDesign文档中创建XML标记和元素.数据在表格中,标记每个单元格需要0.5秒.整个脚本需要几个小时才能完成.

我可以发布内循环代码,但我不确定SO是否应该是通用的或特定的.我会让暴民决定.

[edit]代码构建一个列表(在此循环之前),该表在表中每行包含一个项目.还有一个列表,其中包含表中每列的一个字符串.对于每个单元,程序通过连接两个列表的[row]/[column]位置中的项来创建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
Run Code Online (Sandbox Code Playgroud)

编辑:我已经改写了这个问题,以便更好地反映正确的答案.

JPL*_*mme 1

我想出了这个。

该文档包含一堆数据表。总共大约有 7,000 个数据点需要导出。我正在创建一个包含 7,000 个子元素的根元素。

不要那样做。将每个子元素添加到根元素的速度越来越慢,直到大约 5,000 个子元素时 AppleScript 超时并且程序中止。

解决方案是通过从根创建约 480 个子代,每个子代有大约 16 个孙代,从而使我的代码更加脆弱。节点数量相同,但代码现在运行得足够快。(处理该文档仍需要大约 40 分钟,但这比无穷大要短得多。)

顺便说一句,最初的 7000 名儿童计划并不像看上去那么愚蠢或懒惰。新的解决方案迫使我使用我无法控制的表中的数据将两个表链接在一起。现在,如果有太多不该有的空格,程序就会中断。(但它有效。)