【Adobe Bridge】JavaScriptでキーワードを自動で入力する方法

Bridgeでファイルを見ると、「キーワード」というものがあります。
ここにキーワードを入れることで、ファイルを探しやすくしたり、類似のファイルのタグ付けのようなものができます。

キーワード

ファイルを選択した状態で右クリック>ファイル情報でもキーワードを確認できます。
仕事で「キーワードに情報を自動で入れたい」という案件が発生したため、メモしておきます。

目次

XMP

Bridgeでは、「XMP」というメタデータを管理するための規格のようなものがあります。
JavaScirptでXMPにアクセスし、書き換えを行います。

ファイル情報

ExtendScriptToolkitを起動する

ExtendScriptToolkitを起動します。
インストールしていない方はCreative Cloudからインストールしましょう。

JavaScriptと実行結果

JavaScriptは以下のとおりです。

var doc = app.document;
var fileList = doc.selections;

for(var i=0; i<fileList.length; i++){
 var filePath = fileList[i].path;
 var fileName = fileList[i].name;
 setKeyword(filePath,fileName);
}

function setKeyword(filePath,fileName){
 if(!ExternalObject.AdobeXMPScript){
 ExternalObject.AdobeXMPScript = new ExternalObject('lib:AdobeXMPScript');
 }

 var xmpFile = new XMPFile(filePath,XMPConst.FILE_ILLUSTRATOR, XMPConst.OPEN_FOR_UPDATE);
 var xmpPackets = xmpFile.getXMP();
 var xmp = new XMPMeta(xmpPackets.serialize());

 var ns = XMPConst.NS_DC;
 var mt = new XMPMeta(xmp.serialize());
 
 mt.deleteProperty(ns, "subject");
 mt.setProperty(ns, "subject", fileName);
 
 if(xmpFile.canPutXMP(xmp)) xmpFile.putXMP(mt);
 xmpFile.closeFile(XMPConst.CLOSE_UPDATE_SAFELY);
}

実行すると、Bridge上で選択されたファイルのキーワードが、ファイル名になります。

ざっくり解説

XMPはXMLのように階層になっていて、
書き換えたい場所がどのような構造になっているかを調べる必要があります。
構造は、「ファイル情報」>「Rawデータ」から確認できます。

Rawデータ

ここで「キーワード」の部分がどこにあるのかを調べると、<dc:subject> の中にあることがわかります。
JavaScriptの var ns = XMPConst.NS_DC はdcにアクセスするということになります。
ここをネームスペースというらしいです。

 mt.deleteProperty(ns, "subject");
 mt.setProperty(ns, "subject", fileName);

上記部分が「キーワード」へのアクセス部分です。
最初にdeletePropertyで「キーワード」を初期化します。
これをやらないと、すでに要らないキーワードが入っている場合にエラーになってしまいます。

初期化した後に、あらかじめ取得しておいたファイル名を setProperty で書き込みます。
たったこれだけ。

もしもIllustratorファイルではなく違うファイルでやりたい場合は、「XMPConst.FILE_ILLUSTRATOR」になっているところを「XMPConst.FILE_UNKNOWN」にしてください。

このJavaScriptを考えるにあたり、以下のサイトを参考にしました。
詳しい解説が知りたい方はぜひ参考にしてください。

ExtendScriptでXMPメタデータを取り扱う
XMPScript object reference

目次