Skip to main content
Inspiring
January 18, 2023
質問

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

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

返信数 1

Omachi
Legend
January 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を指定しても最後のページの後ではないということでしょうか?
 
 
ajabon grinsmith
Community Expert
Community Expert
January 19, 2023

横槍すいません

 

 

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

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

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

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

 

 

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

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

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

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

kawamoto_α
Participating Frequently
February 4, 2023

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