[ID CS4-CS6] Поиск ячеек таблицы с заливкой определенного цвета

Nikkore

Участник
Топикстартер
Сообщения
4
Реакции
0
Подскажите, пожалуйста, можно ли средствами Find последовательно найти все ячейки таблицы с заливкой определенного цвета, чтобы поменять цвет на другой?
 

George

I wish I was a monster you think I am
15 лет на форуме
Сообщения
17 302
Реакции
7 864
  • Спасибо
Реакции: RIKITIKI, Nikkore и NNN5

Nikkore

Участник
Топикстартер
Сообщения
4
Реакции
0
Мощнейшее оружие: меняет цвет во всех таблицах во всем документе, а не только в выделенной!
 

densen

15 лет на форуме
Сообщения
751
Реакции
639
Ссылка уже нерабочая. А очень нужно. Помогите найти сей инструмент или тему, которая уже недоступна.
Оригинальный скрипт найден здесь.
//DESCRIPTION:Change Table Fills and Strokes
// Jongware, 18-Jul-2010

Исправленный, чтобы можно было еще и искать толщину обводки ячеек, находится здесь.

Но оба скрипта упираются в ошибку в строке:
for (c=0; c<tab.cells.length; c++)

@Gad
Посмотришь, может быть, что там за засада в скрипте? :)
 
  • Спасибо
Реакции: aleksasha

George

I wish I was a monster you think I am
15 лет на форуме
Сообщения
17 302
Реакции
7 864
Ссылка уже нерабочая. А очень нужно. Помогите найти сей инструмент или тему, которая уже недоступна.
Можете послать проклятия в адрес сотрудников Adobe, которые убили их официальный форум старую версию. Они не только эту тему похоронили, они похоронили десятки тысяч скриптов, которые там были. Похоронили иностранные ветки форума и отдельно ветку скриптинга слили с общей. Да всё что было хорошего взяли и убили. Даже не знаю, на какую тему и какой скрипт ссылался несколько лет назад. Кто же знал, что адобы сами себя будут резать наживо.
 
Последнее редактирование:
  • Спасибо
Реакции: iv-mi

densen

15 лет на форуме
Сообщения
751
Реакции
639
Можете послать проклятия в адрес, сотрудников Adobe, которые убили их официальный форум старую версию.
Я нашел вот такую таблицу с многообещающим названием, но понятия не имею, как ее использовать на практике.
 
  • Спасибо
Реакции: aleksasha

George

I wish I was a monster you think I am
15 лет на форуме
Сообщения
17 302
Реакции
7 864

Gad

Сообщения
2 971
Реакции
1 405
Да он полностью косячный, что сразу видно, все в коде в скобках [ ] сожрало... вместе со скобками.
JavaScript:
myDialog = app.dialogs.add ({name:"Recolor Tables",canCancel:true}); 
swatchlist = app.activeDocument.swatches.everyItem().name; 
with (myDialog) 
{ 
 with (dialogColumns.add()) 
 { 
  with (borderPanels.add()) 
  { 
   staticTexts.add ({staticLabel:"Find"}); 
   swf = dropdowns.add ({stringList:swatchlist, selectedIndex:0}); 
   tbf = percentComboboxes.add({editValue:100, largeNudge:10, stringList:["25", "50", "75", "100"] }); 
   tbfStrk = measurementEditboxes.add({editValue:0.5}); 
  } 
  with (borderPanels.add()) 
  { 
   staticTexts.add ({staticLabel:"Replace"}); 
   swr = dropdowns.add ({stringList:swatchlist, selectedIndex:0}); 
   tbr = percentComboboxes.add({editValue:100, largeNudge:10, stringList:["25", "50", "75", "100"] }); 
   tbrStrk = measurementEditboxes.add({editValue:0.33}); 
  } 
  with (borderPanels.add()) 
  { 
   dostrokes = checkboxControls.add({staticLabel:"Change strokes", checkedState:true}); 
   dofills = checkboxControls.add({staticLabel:"Change fills", checkedState:true}); 
  } 
 } 
} 
if (!myDialog.show() || !(dostrokes.checkedState || dofills.checkedState)) 
{ 
 myDialog.destroy(); 
 exit(0); 
} 
findtint = tbf.editValue; 
findStrk = tbfStrk.editValue; 
findswatch = app.activeDocument.swatches.item(swf.selectedIndex); 
changetint = tbr.editValue; 
changeStrk = tbrStrk.editValue; 
changeswatch = app.activeDocument.swatches.item(swr.selectedIndex); 
strokes = dostrokes.checkedState; 
fills = dofills.checkedState; 
fillchanges = 0; 
strokechanges = 0; 
tb = app.activeDocument.stories.everyItem().tables.everyItem().getElements(); 

 for (t=tb.length-1; t>=0; t--) 
 { 
  tab = tb[t];
  //alert (tb.length)
  for (c=0; c<tab.cells.length; c++) 
  { 
   if (fills && tab.cells[c].fillColor == findswatch && tab.cells[c].fillTint == findtint) 
   { 
    fillchanges++; 
    tab.cells[c].properties = {fillColor:changeswatch, fillTint:changetint}; 
   } 
   if (strokes) 
   { 
    s = false; 
    if (tab.cells[c].topEdgeStrokeColor == findswatch && tab.cells[c].topEdgeStrokeTint == findtint && tab.cells[c].topEdgeStrokeWeight == findStrk) 
    { 
    s = true; 
    tab.cells[c].properties = {topEdgeStrokeColor:changeswatch, topEdgeStrokeTint:changetint, topEdgeStrokeWeight:changeStrk}; 
    } 
    if (tab.cells[c].bottomEdgeStrokeColor == findswatch && tab.cells[c].bottomEdgeStrokeTint == findtint && tab.cells[c].bottomEdgeStrokeWeight == findStrk) 
    { 
    s = true; 
    tab.cells[c].properties = {bottomEdgeStrokeColor:changeswatch, bottomEdgeStrokeTint:changetint, bottomEdgeStrokeWeight:changeStrk}; 
    } 
    if (tab.cells[c].leftEdgeStrokeColor == findswatch && tab.cells[c].leftEdgeStrokeTint == findtint && tab.cells[c].leftEdgeStrokeWeight == findStrk) 
    { 
    s = true; 
    tab.cells[c].properties = {leftEdgeStrokeColor:changeswatch, leftEdgeStrokeTint:changetint, leftEdgeStrokeWeight:changeStrk}; 
    } 
    if (tab.cells[c].rightEdgeStrokeColor == findswatch && tab.cells[c].rightEdgeStrokeTint == findtint && tab.cells[c].rightEdgeStrokeWeight == findStrk) 
    { 
    s = true; 
    tab.cells[c].properties = {rightEdgeStrokeColor:changeswatch, rightEdgeStrokeTint:changetint, rightEdgeStrokeWeight:changeStrk}; 
    } 
    if (s) 
    strokechanges++; 
   } 
  } 
}
ch = "No changes made"; 
if (fillchanges) 
{ 
 ch = fillchanges+" fills changed"; 
 if (strokechanges) 
  ch += "\n"+strokechanges+" strokes changed"; 
} else if (strokechanges) 
  ch = strokechanges+" strokes changed"; 
alert (ch);
Что сразу увидел вернул... пробуйте...