もしかしてitemByNameの使い方間違ってます?

[9664]もしかしてitemByNameの使い方間違ってます? 投稿者:Subi 投稿日:2019/09/21 11:38:57
Windows10, InDesign CC2018です。

マスターページのテキストフレームにレイヤーパネルで「ボックス」とオブジェクト名をつけ、流し込みを行いました。
その後各ページの「ボックス」を移動・変形しようと以下のスクリプトを書きましたが、先頭のスプレッドしか反映されません。
ご助言をお願いします。

app.activeDocument.viewPreferences.rulerOrigin = RulerOrigin.SPREAD_ORIGIN;

var doc = app.activeDocument;
var txtB=doc.textFrames.itemByName("ボックス")

for (i=0;i<doc.spreads.length;i++){
try{
txtB.visibleBounds = [7, 7, 12.5, 24];
}catch(e){
}
}
Subiさんならこれを実行すればでわかるでしょ
var doc = app.activeDocument;
var txtB=doc.textFrames.itemByName("ボックス");
for (i=0;i<doc.spreads.length;i++){
$.writeln(txtB.contents.slice(0, 9));
}
[9666]Re: もしかしてitemByNameの使い方間違ってます? 投稿者:Subi 投稿日:2019/09/21 15:28:09
うわー。直しました。これじゃ一つしかヒットしないですよね。

app.activeDocument.viewPreferences.rulerOrigin = RulerOrigin.SPREAD_ORIGIN;
var doc = app.activeDocument;
for (i=0;i<doc.spreads.length;i++){
var txtB=doc.spreads[i].textFrames.itemByName("ボックス");
try{
txtB.visibleBounds = [7, 7, 12.5, 24];
}catch(e){
}
}



名前に頼らず今の座標で判断するスクリプトも書いたので置いておきます。

app.activeDocument.viewPreferences.rulerOrigin = RulerOrigin.SPREAD_ORIGIN;
//ドキュメントのテキストフレームを対象に
var txtFrame=app.activeDocument.textFrames;
var count=txtFrame.length;
for (var i =count-1; i > -1; i--) {
var y = txtFrame[i].visibleBounds[0];
var x = txtFrame[i].visibleBounds[1];
//座標に±0.1mmの誤差を許容
if((Math.abs(y-7) < 0.1) && (Math.abs(x-7) < 0.1))
{
//テキストフレームを移動
txtFrame[i].visibleBounds = [7, 7, 12.5, 24];
}
}
この記事の書き込み元へのリンク (コメントや質問などはこちらへどうぞ)

このページをシェア