En InDesign, ¿cómo puede crear un script para detectar un objeto bloqueado?

Tengo un folleto de InDesign en el que estoy tratando de crear una secuencia de comandos, sin embargo, tengo problemas. Cuando trato de escribir un guión contra el folleto de 100 páginas, obtengo un:

Número de error: 11274; Cadena de error: el objeto está bloqueado

Cuando paso por las tres capas de la página maestra, no hay una capa bloqueada y cuando aterrizo en una página, Layer Paneltodavía no muestra una capa bloqueada en las áreas superior y de nivel secundario. Pensando que podría ser un problema de archivo, intenté exportar el folleto a un IDML y abrirlo nuevamente y luego guardarlo como un nuevo INDD, pero el problema persiste.

He intentado secuencias de comandos:

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

en todas las páginas antes de intentar manipular el marco de texto cero con ( app.select(allPages[x].textFrames[0]);) a través de un bucle for, pero el problema persiste. Pensando que podría ser un problema de la página maestra, lo intenté:

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

pero sigo teniendo los mismos resultados. Al hacer referencia a la documentación de secuencias de comandos de InDesign en Trabajar con capas , la selección con respecto a las capas de bloqueo es limitada.

¿Cómo puedo escribir un script a través de un documento de InDesign que está produciendo un bloqueo de objeto o hay alguna forma de aislar el objeto bloqueado?

¿Cuál es la línea de código en la que se produce el error?

Respuestas (1)

Por favor, inténtalo

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

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

Normalmente necesita acceder a pageItems a través de su página. Así que tu app.activeDocument.pageItems...no lleva a ninguna parte.

Lo mismo es válido para los masterspreads. Tienen páginas como subcolección. Así que tu código para eso debería ser:

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

También sugiero tratar de encontrarlo visualmente. Este código recorrerá todas las páginas y hará que los elementos bloqueados sean de color magenta. También imprimirá mensajes al 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();