7

Adobe InDesign ドキュメント内に XML タグと要素を作成する AppleScript プログラムがあります。データはテーブルにあり、各セルのタグ付けには 0.5 秒かかります。スクリプト全体が完了するまでに数時間かかります。

内部ループ コードを投稿できますが、SO が一般的なものか固有のものかはわかりません。暴徒に決めさせます。

[編集] コードは、(このループの前に) テーブルの行ごとに 1 つの項目を含むリストを作成します。テーブルの各列に 1 つの文字列を含むリストもあります。プログラムは、2 つのリストの [行]/[列] の位置にある項目を連結して、セルごとに XML 要素と XML タグを作成します。また、そのセル内のテキストを新しく作成された要素に関連付けます。

私は AppleScript にまったく慣れていないので、このコードの一部は Adob​​e のサンプルから大雑把に変更されています。コードがひどかったとしても、気分を害することはありません。

コードは次のとおりです。

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

編集:正しい答えをよりよく反映するために、質問を言い換えました。

4

5 に答える 5

1

私はこれを理解しました。

ドキュメントには、一連のデータ テーブルが含まれています。全体で、エクスポートする必要があるデータ ポイントは約 7,000 あります。7,000 の子を持つ 1 つのルート要素を作成していました。

そうしないでください。ルート要素に各子を追加すると、徐々に遅くなり、約 5,000 の子で AppleScript がタイムアウトになり、プログラムが中止されました。

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

ちなみに、最初の 7,000 人の子供の計画は、見かけほど愚かでも怠け者でもありませんでした。新しいソリューションでは、制御できないテーブル内のデータを使用して 2 つのテーブルをリンクする必要があります。スペースがあってはならないところにスペースがあると、プログラムが壊れるようになりました。(しかし、それは機能します。)

于 2008-10-23T15:33:52.443 に答える
1

問題はほぼ間違いなく選択です。一度にすべてのテキストを抽出して、内部変数を反復処理できる方法はありますか?

于 2008-08-26T17:07:13.487 に答える
0

内部ループ コードを投稿できますが、SO が一般的なものか固有のものかはわかりません。暴徒に決めさせます。

例として投稿するコードは、あなた (またはあなたの上司) が慣れている限り具体的なものにすることができます。多くの場合、より具体的な詳細を提供する方が簡単です。

于 2008-08-14T19:34:54.040 に答える
0

内側のループ コードが適切な長さであれば、投稿できない理由はないと思います。Stack Overflow は、一般的な質問と特定の質問の両方を網羅することを意図していると思います。

于 2008-08-14T19:34:54.197 に答える
0

InDesign または InDesign Server を使用していますか? ドキュメントは何ページですか (または、ドキュメント/ID の設定について教えていただけるその他の情報はありますか)?

私は多くの InDesign サーバー開発を行っています。必ずしもコードに関連しているとは限らないいくつかの理由で、スローダウンが発生している可能性があります。

現在、私は 100 ~ 300 ページのドキュメントをほぼ完全に script/xml から約 100 秒で生成しています (もっと大きなことをしているかもしれません)。

于 2008-09-08T20:52:00.140 に答える