А обязательно конвертировать? Или можно сделать стиль Header Rows таким же как Body Rows?конвертировать в Body Rows?
пытался и неоднократно, в том числе и по этому обсуждению. Вот кстати, подскажите, понятно что по всем таблицам пробежаться в цикле, а по строкам, нужен вложенный цикл или как-то через row.everyItem() можно?Вот тут решается обратная задача - первые строки превратить в заголовки.
Наверное, можно взять как идею и приспособить к своей задаче.Script to convert first row of table to header row
Hi, so I've used this script a few weeks ago and it worked great. Now for some reason, I'm getting an error "cannot set row type" when running it. var myTables = app.activeDocument.stories.everyItem().tables; for (var i = 0; i < myTables.length; i++) { myTables.rows.firstItem().rowType =...community.adobe.com
Попробуйте вот так:Подскажите, как в JS все Header Rows во всех таблицах активного документа конвертировать в Body Rows?
app.activeDocument.stories.everyItem().tables.everyItem().rows.everyItem().properties = {rowType:RowTypes.BODY_ROW};
Такой своеобразный юмор от JavaScript Спасибо огромноеПопробуйте вот так:
Этим скриптом каждой строке из всех таблиц документа присваивается свойство Body Rows. Но скрипт работает странно, так как если в таблице имеются два Header Rows или больше, то скрипт исправляет только самый нижний из них, оставляя верхние без изменения. Но с каждым запуском скрипта их становится всё меньше, пока их число не становится равным нулю.JavaScript:app.activeDocument.stories.everyItem().tables.everyItem().rows.everyItem().properties = {rowType:RowTypes.BODY_ROW};
var myTables = app.activeDocument.stories.everyItem().tables.everyItem().getElements();
for (var i = 0; i < myTables.length; i++) {
for (var j = myTables[i].rows.length - 1; j > -1; j--) {
var myRow = myTables[i].rows[j];
if (myRow.rowType != RowTypes.BODY_ROW) {
try {
myRow.properties = {
rowType: RowTypes.BODY_ROW
};
} catch (e) {
alert('Problem in table ' + myRow.contents);
alert(e);
}
}
}
}
Класс. Про обратный порядок даже и не подумал бы. А что можно сделать с проблемными строками? Не понимаю, это какие-то объединённые ячейки что ли... Достаточно много остаётсяЕсли вручную проходить ряды в обратном порядке, то без юмора обойдется
JavaScript:var myTables = app.activeDocument.stories.everyItem().tables.everyItem().getElements(); for (var i = 0; i < myTables.length; i++) { for (var j = myTables[i].rows.length - 1; j > -1; j--) { var myRow = myTables[i].rows[j]; if (myRow.rowType != RowTypes.BODY_ROW) { try { myRow.properties = { rowType: RowTypes.BODY_ROW }; } catch (e) { alert('Problem in table ' + myRow.contents); alert(e); } } } }
Тогда придется применить запрещенный прием - применять свойство не к строкам, а к ячейкам.Да, проверил. Спотыкается именно на объединённых ячайках и не обрабатывает их. В остальном всё отлично, благодарю всех откликнувшихся
var myTables = app.activeDocument.stories.everyItem().tables.everyItem().getElements();
for (var i = 0; i < myTables.length; i++) {
for (var j = myTables[i].cells.length - 1; j > -1; j--) {
var myRow = myTables[i].cells[j];
if (myRow.rowType != RowTypes.BODY_ROW) {
try {
myRow.properties = {
rowType: RowTypes.BODY_ROW
};
} catch (e) {}
}
}
}
А так можно было?Тогда придется применить запрещенный прием - применять свойство не к строкам, а к ячейкам.
JavaScript:var myTables = app.activeDocument.stories.everyItem().tables.everyItem().getElements(); for (var i = 0; i < myTables.length; i++) { for (var j = myTables[i].cells.length - 1; j > -1; j--) { var myRow = myTables[i].cells[j]; if (myRow.rowType != RowTypes.BODY_ROW) { try { myRow.properties = { rowType: RowTypes.BODY_ROW }; } catch (e) {} } } }