Применить стиль ячейки (appliedCellStyle) к ряду (row) таблицы

Статус
Закрыто для дальнейших ответов.

InPageQuarker

Участник
Топикстартер
Сообщения
3
Реакции
1
Приветствую, уважаемые форумчане!
Буду благодарен за помощь в решении следующей задачи:
Требуется скриптом присвоить стиль ячейки ко всему ряду таблицы.
Пока (на основе найденного в сети) получается искать на выбор: стиль символа, стиль параграфа или определенное текстовое содержимое и присваивать стиль ячейки к собственно ячейке, в которой найден условный блок. Но никак не выходит применить стиль к row.
Код:
function findTable(obj)
{
while (obj.constructor.name != "Table")
{
obj = obj.parent;
if (obj.constructor.name == "Application")
{
throw "Can’t find table";
}
}
return obj;
}
var myTable = 0;
if (app.documents.length > 0 && app.selection.length > 0)
{
myTable = findTable(app.selection[0]);
//Find styles cells formater
if (myTable.constructor.name == "Table")
{
app.findTextPreferences = app.changeTextPreferences = NothingEnum.nothing;
app.findTextPreferences.appliedCharacterStyle = "Heading 2";
var myCellStyle = myTable.findText();
app.findTextPreferences = app.changeTextPreferences = NothingEnum.nothing;
}
if (myCellStyle.length > 0)
{
for (var c = 0; c < myCellStyle.length; c++)
{
myCellStyle[c].parent.appliedCellStyle = "myCellStyle";
}
} else
{
alert("Not found");
}
}

Код:
var myDoc = app.activeDocument
app.findTextPreferences = app.changeTextPreferences = null
app.findTextPreferences.findWhat = "Banana"
var myFound = myDoc.findText()
for(i=0; i<myFound.length; i++)
{
if(myFound[i].parent.constructor.name == "Cell")
{
myFound[i].parent.appliedCellStyle = "Yellow"
var overrides = myFound[i].clearOverrides() //this is the new line added in this content
}
}
 
Row.cells.everyItem() - сюда и apply
Стыдно конечно просить еще и разжевать подаренный кусок, но все мои самостоятельные попытки успехом не увенчались (приводить их все не буду, но в самом простом варианте выдает: "Row не является методом ...").
Если не затруднит, не могли бы Вы на примере ниже показать как именно это использовать?
В свою очередь, с радостью отблагодарил бы "пивом" через ЯД, например.

Код:
var myDoc = app.activeDocument
app.findTextPreferences = app.changeTextPreferences = null
app.findTextPreferences.findWhat = "Banana"
var myFound = myDoc.findText()
for(i=0; i<myFound.length; i++)
{
    if(myFound[i].parent.constructor.name == "Cell")
    {
   myFound[i].parent.appliedCellStyle = "Yellow"
      var overrides = myFound[i].clearOverrides()         
  
    }
}
 
app.findTextPreferences = app.changeTextPreferences = null
Версия ID более ранняя, чем CS4?
Код:
for (i = 0; i < myFound.length; i++)
{
    if (myFound[i].parent.constructor.name == "Cell")
    {
        var myCell = myFound[i].parent;
        var myRow = myCell.parentRow;
        myRow.cells.everyItem().appliedCellStyle = 'Yellow';
        myRow.cells.everyItem().clearCellStyleOverrides();      
    }
}
 
  • Спасибо
Реакции: InPageQuarker
Большое человеческое спасибо!
Пример работает, так же удалось подкорректировать и варианты с поиском по стилям параграфа/символа.
А то уже кошмары снились с var_ами, for_ами, if_ами... чур меня.
Как теперь вижу, порой был близок к правильному варианту, но категорически неверно пытался задать переменную "myRow".
Жаль успел какое-то время назад вручную "протыкать" несколько сот полос с таблицами, но зато теперь во всеоружии, если что.
Версия ID более ранняя, чем CS4?
Это "хвост" из примера на форуме adobe. Хотя пост там датирован 18.06.2013 (т.е. времена явно > CS3).
Какое-то негативное воздействие на работу скрипта может оказать?
Видел еще такой вариант, он "современней"?:
Код:
app.findTextPreferences = app.changeTextPreferences = NothingEnum.nothing;

PS. От слов: "...с радостью отблагодарил бы "пивом" через ЯД, например" не отказываюсь, если сообщите номер.
 
  • Спасибо
Реакции: MT
Статус
Закрыто для дальнейших ответов.