終了

ドキュメント間のページコピーで 複製ページが逆順になる

エクスプローラー ,
Jan 17, 2023 Jan 17, 2023

リンクをクリップボードにコピー

コピー完了

インデザイン 2022 横書き見開きドキュメントです。
docS.pages.itemByRange(0,5).duplicate(LocationOptions.AFTER, docD.pages.item(5));
上記の方法でdocSからdocDにページをコピーした場合、
コピーしたページが逆順に追加されてしまいます。
 
LocationOptions.BEFOREの場合は正順でコピーされます。
 
またLocationOptions.AT_ENDを使うと正順でコピーされますが、見開きスプレッドの場合にスプレッドの1Pの後を指定してもスプレッドの終わりにしか追加できません。
これはバグでしょうか? 使い方が間違っているのでしょうか?
 
キーワード
スクリプティング

表示

326

翻訳

翻訳

レポート

レポート
コミュニティガイドライン
他のユーザーへの思いやりを持ち、敬意を払いましょう。コンテンツの出典を明記し、投稿する前に内容が重複していないか検索してください。 さらに詳しく
community guidelines
Community Expert ,
Jan 18, 2023 Jan 18, 2023

リンクをクリップボードにコピー

コピー完了

> docS.pages.itemByRange(0,5).duplicate(LocationOptions.AFTER, docD.pages.item(5));
> 上記の方法でdocSからdocDにページをコピーした場合、
> コピーしたページが逆順に追加されてしまいます。
>
> LocationOptions.BEFOREの場合は正順でコピーされます。
 
確かにそうなりますね。ただこれはバグというより仕様の気がします。
docS.pages.itemByRange(0,5)ということは、各ページを配列に入れてるわけですね。これを特定のページ(docD.pages.item(5))の後に挿入します。配列の先頭から処理しようとすると
インデックス0:docS.pages.item(0)をdocD.pages.item(5)の後に挿入
インデックス1:docS.pages.item(1)をdocD.pages.item(5)の後に挿入
インデックス2:docS.pages.item(2)をdocD.pages.item(5)の後に挿入
インデックス3:docS.pages.item(3)をdocD.pages.item(5)の後に挿入
このようになるわけですが、そうするとインデックス0が後のページの挿入に従って後ろにずれるということになります。これは処理としては自然な流れです。
リファレンスには複数ページを挿入した場合にどのようになるべきかは明記されていないので、間違いとは言えないと思います。
 
> またLocationOptions.AT_ENDを使うと正順でコピーされますが、見開きスプレッドの場合にスプレッドの> 1Pの後を指定してもスプレッドの終わりにしか追加できません。
> これはバグでしょうか? 使い方が間違っているのでしょうか?
すみません、状況がよく見えないのですが、AT_ENDを指定しても最後のページの後ではないということでしょうか?
 
 

投票

翻訳

翻訳

レポート

レポート
コミュニティガイドライン
他のユーザーへの思いやりを持ち、敬意を払いましょう。コンテンツの出典を明記し、投稿する前に内容が重複していないか検索してください。 さらに詳しく
community guidelines
エクスプローラー ,
Jan 18, 2023 Jan 18, 2023

リンクをクリップボードにコピー

コピー完了

ありがとうございます。

仕様と考えてループで1Pずつ追加などで対応した方が良さそうですね。

試しにdocS.pages.itemByRange(5,0)とページレンジの逆順にしても

同じ結果でした。

 

> またLocationOptions.AT_ENDを使うと正順で

これは例えば2,3P[docD.pages[1,2]]が見開き(spread[1])の状況で

docS.pages.itemByRange(0,5).duplicate(LocationOptions.AT_END, docD.pages.item(1));

とすると2P(pages[1])ではなく3P(pages[2])の後ろに正順でページが追加されます。

自分もドキュメントの最後に追加されるものだと思っていたのですが、

スプレッドの最後ということなのかもしれません。

ただこの場合正順なのでAT_ENDとAFTERで処理方法が異なるのもどうかとも思うのですが。

 

投票

翻訳

翻訳

レポート

レポート
コミュニティガイドライン
他のユーザーへの思いやりを持ち、敬意を払いましょう。コンテンツの出典を明記し、投稿する前に内容が重複していないか検索してください。 さらに詳しく
community guidelines
Community Expert ,
Jan 18, 2023 Jan 18, 2023

リンクをクリップボードにコピー

コピー完了

横槍すいません

 

スクリーンショット 2023-01-19 9.33.13.png

 

このようなテストドキュメントを用意して、

以下のコードを実行してみました。

var docS = app.documents[0];
var docD = app.documents[1];
docS.pages.itemByRange(0, 3).duplicate(LocationOptions.AFTER, docD.pages.item(1));

この結果は、おっしゃる通り複製ページ群の並びが反転しました。

 

スクリーンショット 2023-01-19 9.35.39.png

 

次に引数を書き換えて実行しました。

var docS = app.documents[0];
var docD = app.documents[1];
docS.pages.itemByRange(0, 3).duplicate(LocationOptions.AFTER, docD.pages[-3]);

 pages[-3] といった表記は複製先のページ数の増減によらず常に末尾から3つめが対象となるはずなんですが、結果は変わらずでした。

仕様としてしまっていいかは眉唾かなあという感想です。

投票

翻訳

翻訳

レポート

レポート
コミュニティガイドライン
他のユーザーへの思いやりを持ち、敬意を払いましょう。コンテンツの出典を明記し、投稿する前に内容が重複していないか検索してください。 さらに詳しく
community guidelines
参加者 ,
Feb 03, 2023 Feb 03, 2023

リンクをクリップボードにコピー

コピー完了

最新

pages[-3]は末尾から3つめのPageオブジェクトを取得するコマンドですが、それが実行されるのは1回こっきりなので結果が変わらないのは自然です。
Omachiさんの言う通り仕様と考えてよいと思います。

投票

翻訳

翻訳

レポート

レポート
コミュニティガイドライン
他のユーザーへの思いやりを持ち、敬意を払いましょう。コンテンツの出典を明記し、投稿する前に内容が重複していないか検索してください。 さらに詳しく
community guidelines