2008-08-14 7 views
7

Adob​​e InDesignドキュメント内にXMLタグと要素を作成するAppleScriptプログラムがあります。データはテーブル内にあり、各セルのタグ付けには0.5秒かかります。スクリプト全体が完了するまでに数時間かかります。AppleScriptを使用してInDesign XMLElementsを追加する際のパフォーマンスを向上させるにはどうすればよいですか?

私は内側のループコードを投稿することができますが、SOが一般的または特定のものであると思われるかどうかはわかりません。私は群衆に決定させます。

[編集] このコードは、テーブル内の行ごとに1つの項目を含むリスト(このループの前)を作成します。テーブルの各列に1つの文字列を含むリストもあります。各セルについて、プログラムは、2つのリストの[行]/[列]位置の項目を連結することによって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 

EDIT:

は、ここにコードだ私はより良い正しい答えを反映するために質問を言い換えてきました。

答えて

1

私はこれを考え出しました。

文書には多数のデータテーブルが含まれています。全部で、エクスポートする必要がある約7,000のデータポイントがあります。私は7,000人の子供を持つ1つのルート要素を作成していました。

しないでください。ルート要素への各子の追加は、約5,000人のAppleScriptがタイムアウトしてプログラムが中止されるまで遅くなり、遅くなりました。

解決策は、ルートから約480人の子供を作成することで自分のコードをより脆弱にすることでした。各子供は約16人の孫がいました。同じ数のノードですが、コードは十分速く実行されます。 (ドキュメントの処理にはまだ40分かかりますが、それは無限よりも無限に短い時間です。)

ちなみに、元の7000人の子供プランは、それが現われるほど馬鹿でも怠惰でもありませんでした。新しいソリューションは、私が制御していないテーブルのデータを使って2つのテーブルをリンクさせることです。プログラムが存在しないはずのスペースがあれば、プログラムは壊れます。 (しかし、それは動作します)

0

私は内側のループコードを投稿できますが、SOが一般的または特定のものであると思われるかどうかはわかりません。私は群衆に決定させます。

例として投稿するコードは、あなた(またはあなたの上司)が快適であるように具体的にすることができます - より多くの場合、より具体的な詳細をお手伝いするほうが簡単です。

0

内側のループコードが合理的な長さである場合、投稿できない理由はありません。 Stack Overflowは、一般的な質問と特定の質問の両方を対象としています。

1

問題はほぼ確実に選択されます。とにかく、すべてのテキストを一度に抽出してから、内部変数を反復することはできますか?

0

InDesignまたはInDesign Serverを使用していますか?あなたのドキュメントは何ページ(またはあなたのドキュメント/ ID設定について他にどんな情報を教えてくれますか?)

私は多くのInDesign Server開発を行っています。必ずしもコード関連ではない、いくつかの理由のためにスローダウンを見ることができます。

今、私は約100秒で100〜300ページのドキュメントをほぼ完全にscript/xmlから生成しています(もっと大きなものを実行している可能性があります)。

関連する問題