よろよろ帳

InDesign JavaScript 勉強中

レイヤー操作

未使用と非表示を削除、全てのレイヤーをロック解除。

var Doc=app.activeDocument;
app.menuActions.item('$ID/Delete Unused Layers').invoke();//未使用レイヤーを削除
var Ly=Doc.layers;
for(var i=Ly.length-1; i>=0; i--){//削除は後ろから
    Ly[i].locked=false;//ロック解除
    if(Ly[i].visible==false)Ly[i].remove();//非表示削除
    }

背景オブジェクトのレイヤーはロックしたい。

var Doc=app.activeDocument;
var K=Doc.allPageItems
for(var i=0; i<K.length; i++){
    var VB=K[i].visibleBounds;
    if(Math.round(VB[0])==-3&&Math.round(VB[1])==-3)//左上座標-3
        K[i].itemLayer.locked=true;
        }

一番上に新規レイヤー追加。同じ名前があると無視。

var Doc=app.activeDocument;
Doc.activeLayer=Doc.layers[0];
try{Doc.layers.add({name: "レイヤー名"})
    }catch (e) {}
//名前不要ならDoc.layers.add();

白レイヤーやめてほしい。

var Ly=app.activeDocument.layers
for (var i=0; i<Ly.length; i++){
    if(Ly[i].layerColor==UIColors.WHITE)
    Ly[i].layerColor=UIColors.LIGHT_GRAY;
    }

↓参考
https://www.indesignjs.de/extendscriptAPI/indesign-latest/#UIColors.html#d1e87585

ついでにあやしい色名日本語と照合。

layerColorName