|
例えば、 var docs=app.documents for (a=0;docs.length>a;a++){ app.activeDocument=docs[a] 〜一定の処理〜 }
を書いたとします。 for文の処理の途中でアクティブなドキュメントを変更しているせいか、for文の処理が正しく動作しないようです。
仕方ないので下記のように?@と?Aを追加してfor分内の処理が済んだ後、アクティブなドキュメントをもとに戻して処理を継続させました。
var docs=app.documents var startDoc=app.activeDocument;//?@
for (a=0;docs.length>a;a++){ app.activeDocument=docs[a] 〜一定の処理〜 app.activeDocument=startDoc;//?A }
問題自体は解決したのですが、なんかしっくりきません。別の方法があるかな。と思っています。 アクティブなドキュメントが変わっても処理後アクティブドキュメントを初期値に戻す必要が無く書く方法がありますでしょうか。 宜しくお願い致します。
|
No.10117 2021/07/19(Mon) 12:54:46
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36
|
Re: win:inDesignのjavascript[activeDocument]で取得した配列について / Uske_S |
|
|
|
ぶぶっちさん,こんにちは.
どういう意図があってactiveDocumentを入れ替えるという手法にされたのかわかりませんが,activeDocumentを入れ替えるとDocumentsコレクションオブジェクトの順序が入れ替わる可能性があるので怖くないですか?
>アクティブなドキュメントが変わっても処理後アクティブドキュメントを初期値に戻す必要が無く書く方法がありますでしょうか。 ご質問の最終的な意図はこれでしょうか? 具体的な処理の中身がわからないので,「初期値に戻す必要がなく書く方法」についてはなんとも言えません….
for文の中でactiveDocumentを入れ替えると意図したとおりに(順序で)処理されない,という話でしたら,わざわざそんなことせずにDocuments[a]に対してひとつずつ処理をさせればよいのでは? と思います.
activeDocumentsを入れ替えなくてはならない,やむにやまれぬ事情があるならむしろそちらを知りたいです.
|
No.10118 2021/07/19(Mon) 14:42:29
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.114 Safari/537.36
|
|
Re: win:inDesignのjavascript[activeDocument]で取得した配列について / ぶぶっち |
|
|
|
返信有り難うございます。実はドキュメント間で、足りない段落スタイル、文字スタイルを各ドキュメントに追加していくスクリプトを書きました。
要領はこうです。 ドキュメントにテキストフレームを追加 そこにスタイルを適用した文字列を追加 開いている複数のドキュメントにプルダウンメニューの「app.copy」と「app.paste」行いその後削除を行う。
これで、足りないスタイルが各ドキュメントに追加されていきます。
app.copy、app.pasteを使用する段でアクティブドキュメントを変更しないと処理がうまくできませんでした。
それで、for文を使用して繰り返そうと考えました。
うまく説明できているか解りませんが、宜しくお願い致します。
|
No.10119 2021/07/19(Mon) 15:33:05
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36
|
|
Re: win:inDesignのjavascript[activeDocument]で取得した配列について / ぶぶっち |
|
|
|
Uske_S様
おっしゃっている事が解りました。 サンプルとして(ドキュメントが3本開いているとして).... var sakiNoDoc=app.documents var opDoc=sakiNoDoc
for (b=0;sakiNoDoc.length>b;b++){ app.activeDocument=sakiNoDoc[b]; actDoc=app.activeDocument; $.writeln ("アクティブドキュメント="+actDoc.name);
for (a=0;opDoc.length>a;a++){ $.writeln ("配列"+a+"番は="+opDoc[a].name);
} } だと、動的になりますが、、、
>Documents[a]に対してひとつずつ処理、、、 を踏まえて
var sakiNoDoc=app.documents //var opDoc=sakiNoDoc
opDoc=[3] opDoc[0]=sakiNoDoc[0] opDoc[1]=sakiNoDoc[1] opDoc[2]=sakiNoDoc[2]
for (b=0;sakiNoDoc.length>b;b++){ app.activeDocument=sakiNoDoc[b]; actDoc=app.activeDocument; $.writeln ("アクティブドキュメント="+actDoc.name);
for (a=0;opDoc.length>a;a++){ $.writeln ("配列"+a+"番は="+opDoc[a].name);
} }
だと、アクティブなドキュメントが変更されても、動かないことが解りました。
有り難うございました。 調整してみます。
|
No.10120 2021/07/19(Mon) 16:13:31
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36
|
|
Re: win:inDesignのjavascript[activeDocument]で取得した配列について / お〜まち |
|
|
|
> ドキュメント間で、足りない段落スタイル、文字スタイルを各ドキュメントに追加していく
ということでしたら、Document.importStyles()メソッドを使用してください。 app.copy()、app.paste()ですと、一旦クリップボードを経由するので、クリップボードを拡張するソフトウェアを使っていたり、同時に他の作業を行っていたりすると、クリップボードの中身が変わって意図しない結果になる可能性があります。
書式は Document.importStyles(ImportFormat.TEXT_STYLES_FORMAT, file, GlobalClashResolutionStrategy.DO_NOT_LOAD_THE_STYLE) です。引数は ImportFormat.TEXT_STYLES_FORMAT:文字スタイルと段落スタイル file:読み込み元のInDesignファイル(ファイルオブジェクト) GlobalClashResolutionStrategy.DO_NOT_LOAD_THE_STYLE:競合するものは読み込まない になります。
|
No.10121 2021/07/19(Mon) 17:02:55
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.79 Safari/537.36
|
|
Re: win:inDesignのjavascript[activeDocument]で取得した配列について / お〜まち |
|
|
|
追記: これは段落スタイルパネルのパネルメニューの「段落スタイルを読み込み」(または文字スタイルパネルのパネルメニューの「文字スタイルを読み込み」)と同じ内容です。
|
No.10122 2021/07/19(Mon) 17:13:14
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.79 Safari/537.36
|
|
Re: win:inDesignのjavascript[activeDocument]で取得した配列について / ぶぶっち |
|
|
|
お〜まち様 私のやりたかった事はこれです。 スタイルの読み込みが1つずつのドキュメントならできるのですから、「あるはず」と思い、探しましたがみつからず(見落として)プルダウンメニューに頼った次第です。
この構文を使用すれば、私のやりたいことができそうです。 1から書き直してみます。
有り難うございました。
|
No.10123 2021/07/19(Mon) 18:28:06
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36
|
|