Как скриптом разбить большую таблицу на много маленьких?

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

holgi

Участник
Топикстартер
Сообщения
5
Реакции
0
Есть таблица, которая содержит много строк. Из исходной нужно сделать множество таблиц в одну строку. Я предполагаю, что нужно брать каждую строку, вырезать ее и вставлять перед таблицей. Но не могу разобраться как. Подскажите основные строки скрипта.
Взять и изменить готовое я могу, но вот написать с нуля — пока не получается. Перерыл гугл, но либо не так рыл, либо не там.
 

Oleg Butrin

20 лет на форуме
Сообщения
1 990
Реакции
1 216
PHP:
var story = app.selection[0].parentStory;
var table = story.tables[0];
var point = story.insertionPoints[table.storyOffset.index+1];

for (var i = 0; i < table.rows.length; i++) {
    table.rows[i].select();
    app.copy();
    point.select();
    app.paste();
};
 
  • Спасибо
Реакции: holgi

holgi

Участник
Топикстартер
Сообщения
5
Реакции
0
Спасибо большое, все работает. Я только заменил app.copy на app.cut
Как сделать, чтобы каждая таблица была отдельным абзацем? Нужно добавить "\r" после вставки строки, но я не знаю как.

Подскажите еще, я, вероятно, чешу задней ногой левое ухо, но по-другому просто не умею.
Задача:
1. Есть много строк текста, состоящего из данных, разделенных табуляторами.
2. Нужно получить множество таблиц из одной строки, содержащих эти данные в столбцах.
Мое решение:
1. Через меню командой "Convert Text To Table" получаю одну большую таблицу.
2. Дальше, вашим скриптом получаю много маленьких таблиц.

У меня все работало с помощью конструкции app.activeDocument.textFrames.everyItem().paragraphs.everyItem().convertToTable(); но, как только я попробовал это с таблицей, состоящей из более, чем 50 строк — вылетает ошибка. И в любом случае, этот способ тоже давал множество таблиц, стоящих в одной строке, а мне нужно, чтобы каждая таблица была отдельным абзацем. Как это сделать?
 

Eugenyus

12 лет на форуме
Сообщения
1 960
Реакции
3 589
Код:
app.activeDocument.textFrames.everyItem().paragraphs.everyItem().characters.itemByRange(0,-2).convertToTable();
Смысл здесь в том, чтобы символ конца абзаца оставался за пределами таблицы. Но будет ли работать в таком виде - проверьте сами. Если не сработает - придётся перебирать абзацы циклом.
 

Skvoznyak

15 лет на форуме
Сообщения
5 500
Реакции
2 168
Спасибо большое, все работает. Я только заменил app.copy на app.cut

после такой замены должно перестать работать. (вырезаем ряд 1, ряд 2 становится рядом 1, счетчик уже ==2, дальше понятно). надо цикл менять от максимального до минимального значения. а лучше просто удалить оригинальную таблицу после обработки.
 
Статус
Закрыто для дальнейших ответов.