イベントを含むスクリプト(私が書いていません)がありapp.addEventListener('afterOpen', addVariables);
ます (関数の名前は addVariables です)。
app.addEventListener('afterSave', addVariables);
「終わりのない」ループを作成していることを除いて、希望どおりに機能するように変更しました。
基本的に何が起こっているかというと、スクリプトがユーザーの名前 (例: Tia) を取得し、それを可変テキストとして InDesign CC のペーストボードに追加します。「afterOpen」コマンドを使用すると、ドキュメントを開くたびに名前が更新されました。ドキュメントを最後に開いたのは誰かではなく、ドキュメントを最後に保存したのは誰なのか知りたいので、これはスクリプトの目的に反します。このスクリプトは、最後に保存した人の名前を表示するという点で、「afterSave」コマンドで適切に機能します。ただし、誰かがドキュメントを保存しようとするたびに、スクリプトがループし続ける*という新しい問題が発生しました。
そこで、私の質問は次のとおりです。ドキュメントごとに 1 回だけ実行するように eventListener を指定できますか?
私は javascript には詳しくありませんが、applescript についてはかなり理解しています。
助けてくれてありがとう!
osx 10.8.4 を実行する iMac • Adobe InDesign CC • Adobe ExtendScipt Toolkit を使用して編集する
*誰かがドキュメントを保存すると、スクリプトが実行され、テキスト変数が変更され、InDesign がドキュメントへの変更として (正しく) 記録するため、ループします。そのため、ドキュメントには「未保存」のフラグが付けられます (ドキュメント名の横にアスタリスクが付いています)。アスタリスクを「クリア」するためにもう一度保存するために command + s を押すと、eventListener は afterSave コマンドを取得し、ドキュメントを再度更新します。これにより、InDesign は変更として取得し、未保存としてフラグを立てます...ループの意味を見てください。ドキュメントを閉じるように指示し (command + w)、閉じる前に保存するように指示すると、保存してから閉じます。ただし、ドキュメントを一度だけ保存し、可変テキストを更新してから、ドキュメントがまだ開いている間にそのドキュメントにさらに変更が加えられた場合は、、スクリプトは再度実行されません。明らかに、新しいドキュメントごとにスクリプトを 1 回実行する必要があります。