Skip to main content
Inspiring
March 15, 2023
Answered

【Javascript】特色スウォッチの色を置き換えたい

  • March 15, 2023
  • 2 replies
  • 1573 views

お世話になります。

 

ドキュメントに特色スウォッチが存在していて、

それのグローバルをオフにし、プロセスカラーのK100に置き換えるスクリプトを作りたいです。

 

(function() {

if(app.documents.length <= 0) {return ;}
var doc = app.documents[0] ;

var deleteCount = 0 ;
var spotColors = doc.spots ;
var currentColor ;

for(var i = spotColors.length - 1 ; i >= 0 ; i--) {
    currentColor = spotColors[i] ;
    if(currentColor.colorType == ColorModel.SPOT) {
    currentColor.color = setColor(0,0,0,100);
    currentColor.colorType = ColorModel.PROCESS ;
    deleteCount++ ;
    }
}

function setColor(c, m, y, k)
{
    var tmpColor = new CMYKColor();
    tmpColor.cyan = c;
    tmpColor.magenta = m;
    tmpColor.yellow = y;
    tmpColor.key = k;
    return tmpColor;
}

})() ;

 

上記を実行した結果、なぜか白に置き換わってしまいました。

グローバルをオフにする方法は調べてみたのですが、見つからず・・・。

 

何かいい方法はありませんでしょうか。

宜しくお願いいたします。

This topic has been closed for replies.
Correct answer Ten A

これはSpotがカラーを示すオブジェクトだからですね。swatchのcolorプロパティに設定されて機能するものですから意図した動作にしよと思うならswatchに対する処理を考える必要があります。

 

var bk = new CMYKColor();
bk.cyan = 0;
bk.magenta = 0;
bk.yellow = 0;
bk.black = 100;
var sw = app.activeDocument.swatches;
for (var i=0;i<sw.length;i++) if(sw[i].color.typename=="SpotColor")sw[i].color = bk;

で、こうなります。

2 replies

Ten A
Community Expert
Ten ACommunity ExpertCorrect answer
Community Expert
March 15, 2023

これはSpotがカラーを示すオブジェクトだからですね。swatchのcolorプロパティに設定されて機能するものですから意図した動作にしよと思うならswatchに対する処理を考える必要があります。

 

var bk = new CMYKColor();
bk.cyan = 0;
bk.magenta = 0;
bk.yellow = 0;
bk.black = 100;
var sw = app.activeDocument.swatches;
for (var i=0;i<sw.length;i++) if(sw[i].color.typename=="SpotColor")sw[i].color = bk;

で、こうなります。

nekkonekoAuthor
Inspiring
March 17, 2023

出来ました!

ありがとうございます。

nekkonekoAuthor
Inspiring
March 15, 2023

すみません。

CMYKの

tmpColor.key = k;

tmpColor.black = k;

でいいんですね。

ここを変更したら黒に置き換えられました!

 

グローバルをオフにする方法が知りたいです。