Как в InDesign можно написать скрипт для обнаружения заблокированного объекта?

У меня есть брошюра InDesign, которую я пытаюсь написать, но у меня возникают проблемы. Когда я пытаюсь написать сценарий для 100-страничной брошюры, я получаю:

Номер ошибки: 11274; Строка ошибки: Объект заблокирован

Когда я просматриваю три слоя мастер-страницы, там нет заблокированного слоя, и когда я попадаю на страницу, по- Layer Panelпрежнему не отображается заблокированный слой в областях верхнего и дочернего уровня. Думая, что это может быть проблема с файлом, я попытался экспортировать брошюру в IDML и снова открыть ее, а затем сохранить как новый INDD, но проблема все еще существует.

Я пробовал скрипты:

app.activeDocument.pageItems.everyItem().locked = false;

на всех страницах перед связыванием для управления нулевым текстовым фреймом с помощью ( app.select(allPages[x].textFrames[0]);) через цикл for, но проблема все еще возникает. Думая, что это может быть проблема с главной страницей, которую я пробовал:

app.activeDocument.masterSpreads.everyItem().pageItems.everyItem().locked = false;

но я все еще получаю те же результаты. При обращении к документации по сценариям InDesign в разделе « Работа со слоями» выбор блокировки слоев ограничен.

Как выполнить скрипт через документ InDesign, создающий блокировку объекта, или есть ли способ изолировать заблокированный объект?

В какой строке кода возникает ошибка?

Ответы (1)

Пожалуйста, попробуй

app.activeDocument.allPageItems.everyItem().locked = false;

http://yearbook.github.io/esdocs/#/InDesign/Document/allPageItems

Обычно вам нужно получить доступ к pageItems через их страницу. Так что ваш app.activeDocument.pageItems...никуда не ведет.

То же самое справедливо и для мастер-спрэдов. У них есть страницы в качестве подколлекции. Итак, ваш код для этого должен быть:

app.activeDocument.masterSpreads.everyItem().pages.everyItem().pageItems.everyItem().locked = false;

Также предлагаю попробовать найти его визуально. Этот код пройдёт по всем страницам и сделает заблокированные элементы пурпурными. Он также будет печатать сообщения в ESTK.

function main () {
  var doc = app.activeDocument;
  for(var i = 0; i < doc.pages.length; i++) {
    $.writeln('\'I\'m on page ' + i);
    var page = doc.pages[i];
    for(var j = 0; j < page.pageItems.length; j++) {
      var item = page.pageItems[j];
      if(item.locked === true) {
      // do something to the page item so you can
      // find it visually
        $.writeln('found a locked item');
        item.fillColor = doc.swatches[5]; // normally it is magenta
      }
    }
  }
}
main();