書いたコード
var doc = app.activeDocument;
var dialog = new Window("palette", "テキスト変数に置換");
dialog.add("statictext", undefined, "検索対象(正規表現)");
var source = dialog.add("edittext");
dialog.add("statictext", undefined, "テキスト変数 名前");
var tvName = dialog.add("edittext");
dialog.add("statictext", undefined, "テキスト変数 テキスト");
var tvContents = dialog.add("edittext");
source.preferredSize = tvName.preferredSize = tvContents.preferredSize = [120, 20];
var start = dialog.add("button", undefined, "実行");
start.onClick = function () {
try {
var tv = doc.textVariables.itemByName(tvName.text)
} catch (e) {
var tv = doc.textVariables.add({name: tvName.text});
}
tv.variableType = VariableTypes.CUSTOM_TEXT_TYPE;
tv.variableOptions.contents = tvContents.text;
app.findGrepPreferences.findWhat = source.text;
var results = app.findGrep();
for (var i = 0; i < results.length; i++) {
app.select(results[i]);
if (confirm("置換しますか?")) {
var sel = doc.selection[0];
sel.insertionPoints.firstItem().textVariableInstances.add({associatedTextVariable: tv});
results[i].remove();
}
}
resetFindPref();
}
dialog.show();
function resetFindPref() {
app.findGrepPreferences = NothingEnum.NOTHING;
app.changeGrepPreferences = NothingEnum.NOTHING;
}
メモ
積み残し
- ひとつ前に戻れるようにする?
- 間違えて置換してしまった場合の救済措置
- コンテキストメニューから登録できる(コメント欄参照)
参考