В моем документе по дизайну у меня около 250 страниц, каждая из которых содержит 1 таблицу (по 1 на страницу). Что я пытаюсь сделать, так это:
Вот мой код:
var doc = app.activeDocument;
var myTable = app.activeDocument.stories.everyItem().tables.everyItem().getElements();
alert(myTable.length)//no. of tables in a document
for(var i=0; i<myTable.length; i++) {
var textFrame = doc.pages[0].textFrames.add();
var string = myTable[i].contents;
textFrame.properties =
{
geometricBounds : [ 0,0,100,100 ],
strokeWidth : 0,
fillColor : "None",
contents : string
};
}
Поскольку это глоссарий, буквы будут A,B,C,D..
Например, первая строка таблицы 1 содержит строку «Другое», поэтому на этой странице в текстовом фрейме в верхнем левом углу будет буква А.
ОБНОВЛЕНИЕ: получить первую букву из каждой таблицы
var myTable = app.activeDocument.stories.everyItem().tables.everyItem().getElements();
alert(myTable.length)//no. of tables in a document
for(var i=0; i<myTable.length; i++)
{
var string = myTable[i].contents[0][0];
alert(string);
}
Почти было там!
Я использовал ваш код в качестве основы, и вот что я придумал:
if (parseFloat(app.version) < 6)
getTableInitials();
else
app.doScript(getTableInitials, ScriptLanguage.javascript, undefined, UndoModes.fastEntireScript, "Table Initials to Text Frames");
function getTableInitials() {
var myTable = app.activeDocument.stories.everyItem().tables.everyItem().getElements();
var myTableCount = myTable.length;
for (var i = 0; i < myTableCount; i++) {
var initialLetter = myTable[i].contents[0][0];
var pageName = myTable[i].parent.parentPage.name;
var textFrame = app.activeDocument.pages.itemByName(pageName).textFrames.add();
textFrame.properties = {
geometricBounds: [0,0,100,100],
strokeWeight: 0,
fillColor: "None",
contents: initialLetter
};
}
alert("Finished! Added " + myTableCount + " text frames.");
}
Этот скрипт создаст текстовый фрейм с начальной буквой для каждой таблицы на одной странице. Неважно, как названы ваши страницы (например, арабские или римские цифры, буквы и т. д.), он должен уловить их все. Я также обернул скрипт в функцию, чтобы fastEntireScript
ее можно было вызывать. По крайней мере, это должно дать вам любезность быть всего в одном шаге от отмены сценария, а не количество таблиц × 2 .
Поскольку вы заявили, что ваш документ содержит одну таблицу на странице, проблем быть не должно. Однако, если у вас более одной таблицы, вы получите несколько текстовых фреймов, наложенных друг на друга, каждый из которых содержит начальную букву из соответствующей таблицы.
Обязательно измените свойства текстового фрейма по своему вкусу. Я включил параметры из вашего кода в качестве значений по умолчанию (также исправлен strokeWidth
на strokeWeight
).
Надеюсь, это поможет!
Jongware
переулки123
переулки123