名前の一部しか知らない場合、InDesign CS6 内で特定の textFrame を参照するにはどうすればよいですか? 私はこのビットのコードを持っています:
var otherOverTable = document.layers.item("Spec Sheet").textFrames.item("<Other Printed ItemsYESNOOv>").tables.item(0);
var outputTable = document.layers.item("Spec Sheet").textFrames.item("<OUTPUT>").tables.item(0);
このコードは機能しません。「<」と「>」記号で囲まれた名前を持つ特定の textFrames が、それらのフレーム内のテキストによって自動的に生成されるという事実によるものだと確信しています。
スクリプトを実行する前にこれらの textFrame オブジェクトの名前を変更するだけでなく、何ができますか? たとえば、「名前の一部として 'Other' を含む textFrame を取得する」などと言って、最初のものを参照できる方法はありますか? スクリプトを実行するたびにインデックス番号が異なるため、インデックス番号で参照することはできません。
編集
ありがたいことに、このコードが動作するようになりました。
var otherOverTextFrame = findTextFrame(document, "Other");
var outputTextFrame = findTextFrame(document, "OUTPUT");
function findTextFrame(document, searchStr) {
var textFramesArray = document.textFrames.everyItem().getElements();
for (var i = 0; i < textFramesArray.length; i++) {
if (textFramesArray[i].tables.item(0).isValid) {
if (textFramesArray[i].tables.item(0).cells.item(0).contents.indexOf(searchStr) != -1) {
return textFramesArray[i];
}
}
}
}
これは を返します[object TextFrame]
。それが必要だと思いますが、それを参照する方法を理解するのに苦労しています。たとえば、その textFrame 内のテーブル内の特定のセルの内容を変更する必要があります。ただし、このコードは機能しません。
var otherOverTable = document.layers.item("Spec Sheet").otherOverTextFrame.tables.item(0);
この最後のハードルを乗り越えるにはどうすればよいでしょうか。